uibee 2.17.3 → 2.17.5

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.
@@ -1,7 +1,7 @@
1
1
  import { Components } from 'react-markdown';
2
- import 'highlight.js/styles/github-dark.css';
3
- export default function MarkdownRender({ MDstr, components, className }: {
2
+ export default function MarkdownRender({ MDstr, components, className, size }: {
4
3
  MDstr: string;
5
4
  components?: Components;
6
5
  className?: string;
6
+ size?: 'sm' | 'base' | 'lg' | 'xl';
7
7
  }): import("react/jsx-runtime").JSX.Element;
@@ -1,14 +1,26 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import Markdown from 'react-markdown';
3
3
  import remarkGfm from 'remark-gfm';
4
4
  import rehypeHighlight from 'rehype-highlight';
5
- import 'highlight.js/styles/github-dark.css';
6
- const defaultComponents = {
7
- h1: ({ ...props }) => _jsx("h2", { ...props }),
8
- pre({ children }) {
9
- return (_jsx("pre", { className: 'inline-block rounded-lg overflow-auto whitespace-pre-wrap wrap-break-word w-full', children: children }));
10
- },
11
- };
12
- export default function MarkdownRender({ MDstr, components, className }) {
13
- return (_jsx("div", { className: className ?? 'prose prose-sm prose-custom max-w-none', children: _jsx(Markdown, { components: { ...defaultComponents, ...components }, remarkPlugins: [remarkGfm], rehypePlugins: [rehypeHighlight], children: MDstr.replace(/\\n/g, '\n') }) }));
5
+ import { ExternalLink } from 'lucide-react';
6
+ function makeDefaultComponents() {
7
+ return {
8
+ h1: ({ ...props }) => _jsx("h2", { ...props }),
9
+ input({ type, checked }) {
10
+ if (type !== 'checkbox')
11
+ return _jsx("input", { type: type });
12
+ return (_jsx("span", { "data-task-checkbox": true, className: `inline-flex items-center justify-center w-4 h-4 rounded-xs border-2 shrink-0 align-middle
13
+ ${checked ? 'bg-login border-login' : 'border-login/50'}`, children: checked && (_jsx("svg", { viewBox: '0 0 10 8', className: 'w-2.5 h-2.5 fill-none stroke-white stroke-2', children: _jsx("polyline", { points: '1,4 4,7 9,1', strokeLinecap: 'round', strokeLinejoin: 'round' }) })) }));
14
+ },
15
+ a({ href, children }) {
16
+ return (_jsxs("a", { href: href, target: '_blank', rel: 'noopener noreferrer', className: 'inline-flex items-center gap-1 text-login hover:text-login/80 underline underline-offset-2 transition-colors', children: [children, _jsx(ExternalLink, { className: 'w-3 h-3 shrink-0 opacity-70' })] }));
17
+ },
18
+ pre({ children }) {
19
+ return (_jsx("pre", { className: 'block rounded-lg overflow-auto whitespace-pre-wrap wrap-break-word w-full', children: children }));
20
+ },
21
+ };
22
+ }
23
+ export default function MarkdownRender({ MDstr, components, className, size }) {
24
+ const sizeClass = size === 'sm' ? 'prose-sm' : size === 'lg' ? 'prose-lg' : size === 'xl' ? 'prose-xl' : '';
25
+ return (_jsx("div", { className: className ?? `prose ${sizeClass} prose-custom max-w-none`, children: _jsx(Markdown, { components: { ...makeDefaultComponents(), ...components }, remarkPlugins: [remarkGfm], rehypePlugins: [rehypeHighlight], children: MDstr.replace(/\\n/g, '\n') }) }));
14
26
  }
@@ -847,6 +847,205 @@
847
847
  font-size: 1.2rem;
848
848
  font-weight: 500;
849
849
  }
850
+ .prose-lg {
851
+ font-size: 1.125rem;
852
+ line-height: 1.7777778;
853
+ :where(p):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
854
+ margin-top: 1.3333333em;
855
+ margin-bottom: 1.3333333em;
856
+ }
857
+ :where([class~="lead"]):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
858
+ font-size: 1.2222222em;
859
+ line-height: 1.4545455;
860
+ margin-top: 1.0909091em;
861
+ margin-bottom: 1.0909091em;
862
+ }
863
+ :where(blockquote):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
864
+ margin-top: 1.6666667em;
865
+ margin-bottom: 1.6666667em;
866
+ padding-inline-start: 1em;
867
+ }
868
+ :where(h1):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
869
+ font-size: 2.6666667em;
870
+ margin-top: 0;
871
+ margin-bottom: 0.8333333em;
872
+ line-height: 1;
873
+ }
874
+ :where(h2):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
875
+ font-size: 1.6666667em;
876
+ margin-top: 1.8666667em;
877
+ margin-bottom: 1.0666667em;
878
+ line-height: 1.3333333;
879
+ }
880
+ :where(h3):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
881
+ font-size: 1.3333333em;
882
+ margin-top: 1.6666667em;
883
+ margin-bottom: 0.6666667em;
884
+ line-height: 1.5;
885
+ }
886
+ :where(h4):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
887
+ margin-top: 1.7777778em;
888
+ margin-bottom: 0.4444444em;
889
+ line-height: 1.5555556;
890
+ }
891
+ :where(img):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
892
+ margin-top: 1.7777778em;
893
+ margin-bottom: 1.7777778em;
894
+ }
895
+ :where(picture):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
896
+ margin-top: 1.7777778em;
897
+ margin-bottom: 1.7777778em;
898
+ }
899
+ :where(picture > img):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
900
+ margin-top: 0;
901
+ margin-bottom: 0;
902
+ }
903
+ :where(video):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
904
+ margin-top: 1.7777778em;
905
+ margin-bottom: 1.7777778em;
906
+ }
907
+ :where(kbd):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
908
+ font-size: 0.8888889em;
909
+ border-radius: 0.3125rem;
910
+ padding-top: 0.2222222em;
911
+ padding-inline-end: 0.4444444em;
912
+ padding-bottom: 0.2222222em;
913
+ padding-inline-start: 0.4444444em;
914
+ }
915
+ :where(code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
916
+ font-size: 0.8888889em;
917
+ }
918
+ :where(h2 code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
919
+ font-size: 0.8666667em;
920
+ }
921
+ :where(h3 code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
922
+ font-size: 0.875em;
923
+ }
924
+ :where(pre):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
925
+ font-size: 0.8888889em;
926
+ line-height: 1.75;
927
+ margin-top: 2em;
928
+ margin-bottom: 2em;
929
+ border-radius: 0.375rem;
930
+ padding-top: 1em;
931
+ padding-inline-end: 1.5em;
932
+ padding-bottom: 1em;
933
+ padding-inline-start: 1.5em;
934
+ }
935
+ :where(ol):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
936
+ margin-top: 1.3333333em;
937
+ margin-bottom: 1.3333333em;
938
+ padding-inline-start: 1.5555556em;
939
+ }
940
+ :where(ul):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
941
+ margin-top: 1.3333333em;
942
+ margin-bottom: 1.3333333em;
943
+ padding-inline-start: 1.5555556em;
944
+ }
945
+ :where(li):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
946
+ margin-top: 0.6666667em;
947
+ margin-bottom: 0.6666667em;
948
+ }
949
+ :where(ol > li):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
950
+ padding-inline-start: 0.4444444em;
951
+ }
952
+ :where(ul > li):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
953
+ padding-inline-start: 0.4444444em;
954
+ }
955
+ :where(.prose-lg > ul > li p):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
956
+ margin-top: 0.8888889em;
957
+ margin-bottom: 0.8888889em;
958
+ }
959
+ :where(.prose-lg > ul > li > p:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
960
+ margin-top: 1.3333333em;
961
+ }
962
+ :where(.prose-lg > ul > li > p:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
963
+ margin-bottom: 1.3333333em;
964
+ }
965
+ :where(.prose-lg > ol > li > p:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
966
+ margin-top: 1.3333333em;
967
+ }
968
+ :where(.prose-lg > ol > li > p:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
969
+ margin-bottom: 1.3333333em;
970
+ }
971
+ :where(ul ul, ul ol, ol ul, ol ol):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
972
+ margin-top: 0.8888889em;
973
+ margin-bottom: 0.8888889em;
974
+ }
975
+ :where(dl):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
976
+ margin-top: 1.3333333em;
977
+ margin-bottom: 1.3333333em;
978
+ }
979
+ :where(dt):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
980
+ margin-top: 1.3333333em;
981
+ }
982
+ :where(dd):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
983
+ margin-top: 0.6666667em;
984
+ padding-inline-start: 1.5555556em;
985
+ }
986
+ :where(hr):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
987
+ margin-top: 3.1111111em;
988
+ margin-bottom: 3.1111111em;
989
+ }
990
+ :where(hr + *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
991
+ margin-top: 0;
992
+ }
993
+ :where(h2 + *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
994
+ margin-top: 0;
995
+ }
996
+ :where(h3 + *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
997
+ margin-top: 0;
998
+ }
999
+ :where(h4 + *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1000
+ margin-top: 0;
1001
+ }
1002
+ :where(table):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1003
+ font-size: 0.8888889em;
1004
+ line-height: 1.5;
1005
+ }
1006
+ :where(thead th):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1007
+ padding-inline-end: 0.75em;
1008
+ padding-bottom: 0.75em;
1009
+ padding-inline-start: 0.75em;
1010
+ }
1011
+ :where(thead th:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1012
+ padding-inline-start: 0;
1013
+ }
1014
+ :where(thead th:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1015
+ padding-inline-end: 0;
1016
+ }
1017
+ :where(tbody td, tfoot td):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1018
+ padding-top: 0.75em;
1019
+ padding-inline-end: 0.75em;
1020
+ padding-bottom: 0.75em;
1021
+ padding-inline-start: 0.75em;
1022
+ }
1023
+ :where(tbody td:first-child, tfoot td:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1024
+ padding-inline-start: 0;
1025
+ }
1026
+ :where(tbody td:last-child, tfoot td:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1027
+ padding-inline-end: 0;
1028
+ }
1029
+ :where(figure):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1030
+ margin-top: 1.7777778em;
1031
+ margin-bottom: 1.7777778em;
1032
+ }
1033
+ :where(figure > *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1034
+ margin-top: 0;
1035
+ margin-bottom: 0;
1036
+ }
1037
+ :where(figcaption):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1038
+ font-size: 0.8888889em;
1039
+ line-height: 1.5;
1040
+ margin-top: 1em;
1041
+ }
1042
+ :where(.prose-lg > :first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1043
+ margin-top: 0;
1044
+ }
1045
+ :where(.prose-lg > :last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1046
+ margin-bottom: 0;
1047
+ }
1048
+ }
850
1049
  .prose-sm {
851
1050
  font-size: 0.875rem;
852
1051
  line-height: 1.7142857;
@@ -1046,6 +1245,238 @@
1046
1245
  margin-bottom: 0;
1047
1246
  }
1048
1247
  }
1248
+ .prose-xl {
1249
+ font-size: 1.25rem;
1250
+ line-height: 1.8;
1251
+ :where(p):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1252
+ margin-top: 1.2em;
1253
+ margin-bottom: 1.2em;
1254
+ }
1255
+ :where([class~="lead"]):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1256
+ font-size: 1.2em;
1257
+ line-height: 1.5;
1258
+ margin-top: 1em;
1259
+ margin-bottom: 1em;
1260
+ }
1261
+ :where(blockquote):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1262
+ margin-top: 1.6em;
1263
+ margin-bottom: 1.6em;
1264
+ padding-inline-start: 1.0666667em;
1265
+ }
1266
+ :where(h1):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1267
+ font-size: 2.8em;
1268
+ margin-top: 0;
1269
+ margin-bottom: 0.8571429em;
1270
+ line-height: 1;
1271
+ }
1272
+ :where(h2):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1273
+ font-size: 1.8em;
1274
+ margin-top: 1.5555556em;
1275
+ margin-bottom: 0.8888889em;
1276
+ line-height: 1.1111111;
1277
+ }
1278
+ :where(h3):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1279
+ font-size: 1.5em;
1280
+ margin-top: 1.6em;
1281
+ margin-bottom: 0.6666667em;
1282
+ line-height: 1.3333333;
1283
+ }
1284
+ :where(h4):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1285
+ margin-top: 1.8em;
1286
+ margin-bottom: 0.6em;
1287
+ line-height: 1.6;
1288
+ }
1289
+ :where(img):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1290
+ margin-top: 2em;
1291
+ margin-bottom: 2em;
1292
+ }
1293
+ :where(picture):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1294
+ margin-top: 2em;
1295
+ margin-bottom: 2em;
1296
+ }
1297
+ :where(picture > img):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1298
+ margin-top: 0;
1299
+ margin-bottom: 0;
1300
+ }
1301
+ :where(video):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1302
+ margin-top: 2em;
1303
+ margin-bottom: 2em;
1304
+ }
1305
+ :where(kbd):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1306
+ font-size: 0.9em;
1307
+ border-radius: 0.3125rem;
1308
+ padding-top: 0.25em;
1309
+ padding-inline-end: 0.4em;
1310
+ padding-bottom: 0.25em;
1311
+ padding-inline-start: 0.4em;
1312
+ }
1313
+ :where(code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1314
+ font-size: 0.9em;
1315
+ }
1316
+ :where(h2 code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1317
+ font-size: 0.8611111em;
1318
+ }
1319
+ :where(h3 code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1320
+ font-size: 0.9em;
1321
+ }
1322
+ :where(pre):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1323
+ font-size: 0.9em;
1324
+ line-height: 1.7777778;
1325
+ margin-top: 2em;
1326
+ margin-bottom: 2em;
1327
+ border-radius: 0.5rem;
1328
+ padding-top: 1.1111111em;
1329
+ padding-inline-end: 1.3333333em;
1330
+ padding-bottom: 1.1111111em;
1331
+ padding-inline-start: 1.3333333em;
1332
+ }
1333
+ :where(ol):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1334
+ margin-top: 1.2em;
1335
+ margin-bottom: 1.2em;
1336
+ padding-inline-start: 1.6em;
1337
+ }
1338
+ :where(ul):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1339
+ margin-top: 1.2em;
1340
+ margin-bottom: 1.2em;
1341
+ padding-inline-start: 1.6em;
1342
+ }
1343
+ :where(li):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1344
+ margin-top: 0.6em;
1345
+ margin-bottom: 0.6em;
1346
+ }
1347
+ :where(ol > li):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1348
+ padding-inline-start: 0.4em;
1349
+ }
1350
+ :where(ul > li):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1351
+ padding-inline-start: 0.4em;
1352
+ }
1353
+ :where(.prose-xl > ul > li p):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1354
+ margin-top: 0.8em;
1355
+ margin-bottom: 0.8em;
1356
+ }
1357
+ :where(.prose-xl > ul > li > p:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1358
+ margin-top: 1.2em;
1359
+ }
1360
+ :where(.prose-xl > ul > li > p:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1361
+ margin-bottom: 1.2em;
1362
+ }
1363
+ :where(.prose-xl > ol > li > p:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1364
+ margin-top: 1.2em;
1365
+ }
1366
+ :where(.prose-xl > ol > li > p:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1367
+ margin-bottom: 1.2em;
1368
+ }
1369
+ :where(ul ul, ul ol, ol ul, ol ol):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1370
+ margin-top: 0.8em;
1371
+ margin-bottom: 0.8em;
1372
+ }
1373
+ :where(dl):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1374
+ margin-top: 1.2em;
1375
+ margin-bottom: 1.2em;
1376
+ }
1377
+ :where(dt):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1378
+ margin-top: 1.2em;
1379
+ }
1380
+ :where(dd):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1381
+ margin-top: 0.6em;
1382
+ padding-inline-start: 1.6em;
1383
+ }
1384
+ :where(hr):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1385
+ margin-top: 2.8em;
1386
+ margin-bottom: 2.8em;
1387
+ }
1388
+ :where(hr + *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1389
+ margin-top: 0;
1390
+ }
1391
+ :where(h2 + *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1392
+ margin-top: 0;
1393
+ }
1394
+ :where(h3 + *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1395
+ margin-top: 0;
1396
+ }
1397
+ :where(h4 + *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1398
+ margin-top: 0;
1399
+ }
1400
+ :where(table):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1401
+ font-size: 0.9em;
1402
+ line-height: 1.5555556;
1403
+ }
1404
+ :where(thead th):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1405
+ padding-inline-end: 0.6666667em;
1406
+ padding-bottom: 0.8888889em;
1407
+ padding-inline-start: 0.6666667em;
1408
+ }
1409
+ :where(thead th:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1410
+ padding-inline-start: 0;
1411
+ }
1412
+ :where(thead th:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1413
+ padding-inline-end: 0;
1414
+ }
1415
+ :where(tbody td, tfoot td):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1416
+ padding-top: 0.8888889em;
1417
+ padding-inline-end: 0.6666667em;
1418
+ padding-bottom: 0.8888889em;
1419
+ padding-inline-start: 0.6666667em;
1420
+ }
1421
+ :where(tbody td:first-child, tfoot td:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1422
+ padding-inline-start: 0;
1423
+ }
1424
+ :where(tbody td:last-child, tfoot td:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1425
+ padding-inline-end: 0;
1426
+ }
1427
+ :where(figure):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1428
+ margin-top: 2em;
1429
+ margin-bottom: 2em;
1430
+ }
1431
+ :where(figure > *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1432
+ margin-top: 0;
1433
+ margin-bottom: 0;
1434
+ }
1435
+ :where(figcaption):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1436
+ font-size: 0.9em;
1437
+ line-height: 1.5555556;
1438
+ margin-top: 1em;
1439
+ }
1440
+ :where(.prose-xl > :first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1441
+ margin-top: 0;
1442
+ }
1443
+ :where(.prose-xl > :last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1444
+ margin-bottom: 0;
1445
+ }
1446
+ }
1447
+ .prose-custom {
1448
+ line-height: 24px;
1449
+ --tw-prose-body: var(--color-login-text);
1450
+ --tw-prose-headings: var(--color-login-text);
1451
+ --tw-prose-lead: var(--color-login-300);
1452
+ --tw-prose-links: var(--color-login);
1453
+ --tw-prose-bold: #fff;
1454
+ --tw-prose-counters: var(--color-login);
1455
+ --tw-prose-bullets: var(--color-login);
1456
+ --tw-prose-hr: var(--color-login-300);
1457
+ --tw-prose-quotes: var(--color-login-text);
1458
+ --tw-prose-quote-borders: var(--color-login);
1459
+ --tw-prose-captions: var(--color-login-300);
1460
+ --tw-prose-code: var(--color-login-text);
1461
+ --tw-prose-pre-code: var(--color-login-text);
1462
+ --tw-prose-pre-bg: var(--color-login-900);
1463
+ --tw-prose-th-borders: var(--color-login-500);
1464
+ --tw-prose-td-borders: var(--color-login-500);
1465
+ & p {
1466
+ margin-top: 0.25rem;
1467
+ margin-bottom: 0.75rem;
1468
+ }
1469
+ & li {
1470
+ margin-top: 0;
1471
+ margin-bottom: 0;
1472
+ }
1473
+ & ul:has(> li > span[data-task-checkbox]) {
1474
+ padding-left: 0;
1475
+ }
1476
+ & li:has(> span[data-task-checkbox]) {
1477
+ list-style: none;
1478
+ }
1479
+ }
1049
1480
  .-mt-0\.5 {
1050
1481
  margin-top: calc(var(--spacing) * -0.5);
1051
1482
  }
@@ -1110,9 +1541,6 @@
1110
1541
  .hidden {
1111
1542
  display: none;
1112
1543
  }
1113
- .inline-block {
1114
- display: inline-block;
1115
- }
1116
1544
  .inline-flex {
1117
1545
  display: inline-flex;
1118
1546
  }
@@ -1128,6 +1556,9 @@
1128
1556
  .h-2 {
1129
1557
  height: calc(var(--spacing) * 2);
1130
1558
  }
1559
+ .h-2\.5 {
1560
+ height: calc(var(--spacing) * 2.5);
1561
+ }
1131
1562
  .h-3 {
1132
1563
  height: calc(var(--spacing) * 3);
1133
1564
  }
@@ -1197,6 +1628,9 @@
1197
1628
  .w-2 {
1198
1629
  width: calc(var(--spacing) * 2);
1199
1630
  }
1631
+ .w-2\.5 {
1632
+ width: calc(var(--spacing) * 2.5);
1633
+ }
1200
1634
  .w-3 {
1201
1635
  width: calc(var(--spacing) * 3);
1202
1636
  }
@@ -1548,6 +1982,9 @@
1548
1982
  .border-gray-200 {
1549
1983
  border-color: var(--color-gray-200);
1550
1984
  }
1985
+ .border-login {
1986
+ border-color: var(--color-login);
1987
+ }
1551
1988
  .border-login-50 {
1552
1989
  border-color: var(--color-login-50);
1553
1990
  }
@@ -1581,6 +2018,12 @@
1581
2018
  border-color: color-mix(in oklab, var(--color-login-600) 50%, transparent);
1582
2019
  }
1583
2020
  }
2021
+ .border-login\/50 {
2022
+ border-color: color-mix(in srgb, #fd8738 50%, transparent);
2023
+ @supports (color: color-mix(in lab, red, red)) {
2024
+ border-color: color-mix(in oklab, var(--color-login) 50%, transparent);
2025
+ }
2026
+ }
1584
2027
  .border-orange-400\/25 {
1585
2028
  border-color: color-mix(in srgb, oklch(75% 0.183 55.934) 25%, transparent);
1586
2029
  @supports (color: color-mix(in lab, red, red)) {
@@ -1859,9 +2302,15 @@
1859
2302
  .stroke-red-400 {
1860
2303
  stroke: var(--color-red-400);
1861
2304
  }
2305
+ .stroke-white {
2306
+ stroke: var(--color-white);
2307
+ }
1862
2308
  .stroke-yellow-400 {
1863
2309
  stroke: var(--color-yellow-400);
1864
2310
  }
2311
+ .stroke-2 {
2312
+ stroke-width: 2;
2313
+ }
1865
2314
  .stroke-\[3\.5px\] {
1866
2315
  stroke-width: 3.5px;
1867
2316
  }
@@ -1979,6 +2428,9 @@
1979
2428
  .text-right {
1980
2429
  text-align: right;
1981
2430
  }
2431
+ .align-middle {
2432
+ vertical-align: middle;
2433
+ }
1982
2434
  .font-mono {
1983
2435
  font-family: var(--font-mono);
1984
2436
  }
@@ -2167,6 +2619,12 @@
2167
2619
  .no-underline {
2168
2620
  text-decoration-line: none;
2169
2621
  }
2622
+ .underline {
2623
+ text-decoration-line: underline;
2624
+ }
2625
+ .underline-offset-2 {
2626
+ text-underline-offset: 2px;
2627
+ }
2170
2628
  .placeholder-login-200 {
2171
2629
  &::placeholder {
2172
2630
  color: var(--color-login-200);
@@ -2184,6 +2642,9 @@
2184
2642
  .opacity-50 {
2185
2643
  opacity: 50%;
2186
2644
  }
2645
+ .opacity-70 {
2646
+ opacity: 70%;
2647
+ }
2187
2648
  .opacity-100 {
2188
2649
  opacity: 100%;
2189
2650
  }
@@ -2333,24 +2794,6 @@
2333
2794
  --tw-ease: var(--ease-out);
2334
2795
  transition-timing-function: var(--ease-out);
2335
2796
  }
2336
- .prose-custom {
2337
- --tw-prose-body: var(--color-login-text);
2338
- --tw-prose-headings: var(--color-login-text);
2339
- --tw-prose-lead: var(--color-login-300);
2340
- --tw-prose-links: var(--color-login);
2341
- --tw-prose-bold: var(--color-login-text);
2342
- --tw-prose-counters: var(--color-login-400);
2343
- --tw-prose-bullets: var(--color-login-400);
2344
- --tw-prose-hr: var(--color-login-300);
2345
- --tw-prose-quotes: var(--color-login-text);
2346
- --tw-prose-quote-borders: var(--color-login-300);
2347
- --tw-prose-captions: var(--color-login-300);
2348
- --tw-prose-code: var(--color-login-text);
2349
- --tw-prose-pre-code: var(--color-login-text);
2350
- --tw-prose-pre-bg: var(--color-login-800);
2351
- --tw-prose-th-borders: var(--color-login-500);
2352
- --tw-prose-td-borders: var(--color-login-500);
2353
- }
2354
2797
  .outline-none {
2355
2798
  --tw-outline-style: none;
2356
2799
  outline-style: none;
@@ -2775,6 +3218,16 @@
2775
3218
  }
2776
3219
  }
2777
3220
  }
3221
+ .hover\:text-login\/80 {
3222
+ &:hover {
3223
+ @media (hover: hover) {
3224
+ color: color-mix(in srgb, #fd8738 80%, transparent);
3225
+ @supports (color: color-mix(in lab, red, red)) {
3226
+ color: color-mix(in oklab, var(--color-login) 80%, transparent);
3227
+ }
3228
+ }
3229
+ }
3230
+ }
2778
3231
  .hover\:text-red-200 {
2779
3232
  &:hover {
2780
3233
  @media (hover: hover) {
@@ -3000,6 +3453,81 @@
3000
3453
  --color-login-50: #ffffff;
3001
3454
  --color-login-text: #0e0e0e;
3002
3455
  }
3456
+ /*!
3457
+ Theme: GitHub Dark
3458
+ Description: Dark theme as seen on github.com
3459
+ Author: github.com
3460
+ Maintainer: @Hirse
3461
+ Updated: 2021-05-15
3462
+
3463
+ Outdated base version: https://github.com/primer/github-syntax-dark
3464
+ Current colors taken from GitHub's CSS
3465
+ */
3466
+ pre code.hljs {
3467
+ display: block;
3468
+ overflow-x: auto;
3469
+ padding: 1em;
3470
+ }
3471
+ code.hljs {
3472
+ padding: 3px 5px;
3473
+ }
3474
+ .hljs {
3475
+ color: #c9d1d9;
3476
+ background: #0d1117;
3477
+ }
3478
+ .hljs-doctag, .hljs-keyword, .hljs-meta .hljs-keyword, .hljs-template-tag, .hljs-template-variable, .hljs-type, .hljs-variable.language_ {
3479
+ color: #ff7b72;
3480
+ }
3481
+ .hljs-title, .hljs-title.class_, .hljs-title.class_.inherited__, .hljs-title.function_ {
3482
+ color: #d2a8ff;
3483
+ }
3484
+ .hljs-attr, .hljs-attribute, .hljs-literal, .hljs-meta, .hljs-number, .hljs-operator, .hljs-variable, .hljs-selector-attr, .hljs-selector-class, .hljs-selector-id {
3485
+ color: #79c0ff;
3486
+ }
3487
+ .hljs-regexp, .hljs-string, .hljs-meta .hljs-string {
3488
+ color: #a5d6ff;
3489
+ }
3490
+ .hljs-built_in, .hljs-symbol {
3491
+ color: #ffa657;
3492
+ }
3493
+ .hljs-comment, .hljs-code, .hljs-formula {
3494
+ color: #8b949e;
3495
+ }
3496
+ .hljs-name, .hljs-quote, .hljs-selector-tag, .hljs-selector-pseudo {
3497
+ color: #7ee787;
3498
+ }
3499
+ .hljs-subst {
3500
+ color: #c9d1d9;
3501
+ }
3502
+ .hljs-section {
3503
+ color: #1f6feb;
3504
+ font-weight: bold;
3505
+ }
3506
+ .hljs-bullet {
3507
+ color: #f2cc60;
3508
+ }
3509
+ .hljs-emphasis {
3510
+ color: #c9d1d9;
3511
+ font-style: italic;
3512
+ }
3513
+ .hljs-strong {
3514
+ color: #c9d1d9;
3515
+ font-weight: bold;
3516
+ }
3517
+ .hljs-addition {
3518
+ color: #aff5b4;
3519
+ background-color: #033a16;
3520
+ }
3521
+ .hljs-deletion {
3522
+ color: #ffdcd7;
3523
+ background-color: #67060c;
3524
+ }
3525
+ .hljs {
3526
+ background: transparent;
3527
+ }
3528
+ pre code.hljs {
3529
+ padding: 0;
3530
+ }
3003
3531
  @keyframes jump {
3004
3532
  40% {
3005
3533
  transform: translateY(-0.3rem);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "uibee",
3
- "version": "2.17.3",
3
+ "version": "2.17.5",
4
4
  "description": "Shared components, functions and hooks for reuse across Login projects",
5
5
  "homepage": "https://github.com/Login-Linjeforening-for-IT/uibee#readme",
6
6
  "bugs": {
@@ -1,28 +1,60 @@
1
1
  import Markdown, { Components } from 'react-markdown'
2
2
  import remarkGfm from 'remark-gfm'
3
3
  import rehypeHighlight from 'rehype-highlight'
4
- import 'highlight.js/styles/github-dark.css'
4
+ import { ExternalLink } from 'lucide-react'
5
5
 
6
- const defaultComponents: Components = {
7
- h1: ({...props}) => <h2 {...props} />,
8
- pre({ children }) {
9
- return (
10
- <pre className='inline-block rounded-lg overflow-auto whitespace-pre-wrap wrap-break-word w-full'>
11
- {children}
12
- </pre>
13
- )
14
- },
15
- }
6
+ function makeDefaultComponents(): Components {
7
+ return {
8
+ h1: ({...props}) => <h2 {...props} />,
9
+ input({ type, checked }) {
10
+ if (type !== 'checkbox') return <input type={type} />
11
+ return (
12
+ <span
13
+ data-task-checkbox
14
+ className={`inline-flex items-center justify-center w-4 h-4 rounded-xs border-2 shrink-0 align-middle
15
+ ${checked ? 'bg-login border-login' : 'border-login/50'}`}
16
+ >
17
+ {checked && (
18
+ <svg viewBox='0 0 10 8' className='w-2.5 h-2.5 fill-none stroke-white stroke-2'>
19
+ <polyline points='1,4 4,7 9,1' strokeLinecap='round' strokeLinejoin='round' />
20
+ </svg>
21
+ )}
22
+ </span>
23
+ )
24
+ },
25
+ a({ href, children }) {
26
+ return (
27
+ <a
28
+ href={href}
29
+ target='_blank'
30
+ rel='noopener noreferrer'
31
+ className='inline-flex items-center gap-1 text-login hover:text-login/80 underline underline-offset-2 transition-colors'
32
+ >
33
+ {children}
34
+ <ExternalLink className='w-3 h-3 shrink-0 opacity-70' />
35
+ </a>
36
+ )
37
+ },
38
+ pre({ children }) {
39
+ return (
40
+ <pre className='block rounded-lg overflow-auto whitespace-pre-wrap wrap-break-word w-full'>
41
+ {children}
42
+ </pre>
43
+ )
44
+ },
45
+ }}
16
46
 
17
- export default function MarkdownRender({ MDstr, components, className }: {
47
+ export default function MarkdownRender({ MDstr, components, className, size }: {
18
48
  MDstr: string
19
49
  components?: Components
20
50
  className?: string
51
+ size?: 'sm' | 'base' | 'lg' | 'xl'
21
52
  }) {
53
+ const sizeClass = size === 'sm' ? 'prose-sm' : size === 'lg' ? 'prose-lg' : size === 'xl' ? 'prose-xl' : ''
22
54
  return (
23
- <div className={className ?? 'prose prose-sm prose-custom max-w-none'}>
55
+ <div className={className ?? `prose ${sizeClass} prose-custom max-w-none`}>
24
56
  <Markdown
25
- components={{ ...defaultComponents, ...components }}
57
+ components={{ ...makeDefaultComponents(), ...components }}
26
58
  remarkPlugins={[remarkGfm]}
27
59
  rehypePlugins={[rehypeHighlight]}
28
60
  >
package/src/globals.css CHANGED
@@ -100,22 +100,51 @@
100
100
  }
101
101
 
102
102
  @utility prose-custom {
103
+ line-height: 24px;
103
104
  --tw-prose-body: var(--color-login-text);
104
105
  --tw-prose-headings: var(--color-login-text);
105
106
  --tw-prose-lead: var(--color-login-300);
106
107
  --tw-prose-links: var(--color-login);
107
- --tw-prose-bold: var(--color-login-text);
108
- --tw-prose-counters: var(--color-login-400);
109
- --tw-prose-bullets: var(--color-login-400);
108
+ --tw-prose-bold: #fff;
109
+ --tw-prose-counters: var(--color-login);
110
+ --tw-prose-bullets: var(--color-login);
110
111
  --tw-prose-hr: var(--color-login-300);
111
112
  --tw-prose-quotes: var(--color-login-text);
112
- --tw-prose-quote-borders: var(--color-login-300);
113
+ --tw-prose-quote-borders: var(--color-login);
113
114
  --tw-prose-captions: var(--color-login-300);
114
115
  --tw-prose-code: var(--color-login-text);
115
116
  --tw-prose-pre-code: var(--color-login-text);
116
- --tw-prose-pre-bg: var(--color-login-800);
117
+ --tw-prose-pre-bg: var(--color-login-900);
117
118
  --tw-prose-th-borders: var(--color-login-500);
118
119
  --tw-prose-td-borders: var(--color-login-500);
120
+
121
+ & p {
122
+ margin-top: 0.25rem;
123
+ margin-bottom: 0.75rem;
124
+ }
125
+
126
+ & li {
127
+ margin-top: 0;
128
+ margin-bottom: 0;
129
+ }
130
+
131
+ & ul:has(> li > span[data-task-checkbox]) {
132
+ padding-left: 0;
133
+ }
134
+
135
+ & li:has(> span[data-task-checkbox]) {
136
+ list-style: none;
137
+ }
138
+ }
139
+
140
+ @import 'highlight.js/styles/github-dark.css';
141
+
142
+ .hljs {
143
+ background: transparent;
144
+ }
145
+
146
+ pre code.hljs {
147
+ padding: 0;
119
148
  }
120
149
 
121
150
  @keyframes jump {