sol-components 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. package/README.md +7 -0
  2. package/core/activate.js +27 -0
  3. package/core/adopt.js +71 -0
  4. package/core/auth-core.js +73 -0
  5. package/core/auth-fetch.js +154 -0
  6. package/core/component-mount.js +110 -0
  7. package/core/defaults.js +48 -0
  8. package/core/define.js +15 -0
  9. package/core/display-target.js +166 -0
  10. package/core/edit-placements.js +28 -0
  11. package/core/editor-self.js +127 -0
  12. package/core/editor.js +162 -0
  13. package/core/events.js +27 -0
  14. package/core/extension-points.js +189 -0
  15. package/core/form-utils.js +210 -0
  16. package/core/from-query.js +138 -0
  17. package/core/from-rdf.js +52 -0
  18. package/core/here.js +33 -0
  19. package/core/include-core.js +73 -0
  20. package/core/inrupt-global.js +18 -0
  21. package/core/menu-consumer.js +41 -0
  22. package/core/menu-rdf.js +154 -0
  23. package/core/pod-ops.js +392 -0
  24. package/core/pod-registry.js +82 -0
  25. package/core/popup-proxy.js +255 -0
  26. package/core/rdf-core.js +280 -0
  27. package/core/rdf-render.js +136 -0
  28. package/core/rdf-utils.js +411 -0
  29. package/core/rdf.js +154 -0
  30. package/core/services.js +106 -0
  31. package/core/shape-to-form.js +741 -0
  32. package/core/sparql-safety.js +20 -0
  33. package/core/utils.js +196 -0
  34. package/dist/importmap-cdn.json +49 -0
  35. package/dist/importmap-local.json +49 -0
  36. package/dist/sol-loader.manifest.json +140 -0
  37. package/dist/vendor/@comunica-query-sparql.js +137851 -0
  38. package/dist/vendor/@inrupt-solid-client-authn-browser.js +7503 -0
  39. package/dist/vendor/dompurify.js +1476 -0
  40. package/dist/vendor/ical.js.js +9739 -0
  41. package/dist/vendor/marked.js +85 -0
  42. package/dist/vendor/n3.js +14670 -0
  43. package/dist/vendor/rdf-validate-shacl.js +6970 -0
  44. package/dist/vendor/rdflib.js +35172 -0
  45. package/dist/vendor/solid-logic.js +6819 -0
  46. package/dist/vendor/solid-ui.js +21945 -0
  47. package/node/sol-form.js +133 -0
  48. package/node/sol-include.js +55 -0
  49. package/node/sol-login.js +632 -0
  50. package/node/sol-menu.js +639 -0
  51. package/node/sol-query.js +116 -0
  52. package/package.json +133 -0
  53. package/web/menu-from-rdf.js +23 -0
  54. package/web/scripts/prefs.js +25 -0
  55. package/web/sol-accordion.js +114 -0
  56. package/web/sol-basic.js +50 -0
  57. package/web/sol-breadcrumb.js +131 -0
  58. package/web/sol-button.js +244 -0
  59. package/web/sol-calendar.js +465 -0
  60. package/web/sol-default.js +118 -0
  61. package/web/sol-dropdown-button.js +222 -0
  62. package/web/sol-feed.js +1336 -0
  63. package/web/sol-form.js +949 -0
  64. package/web/sol-full.js +43 -0
  65. package/web/sol-gallery.js +303 -0
  66. package/web/sol-include.js +246 -0
  67. package/web/sol-live-edit.js +415 -0
  68. package/web/sol-login.js +856 -0
  69. package/web/sol-menu.js +593 -0
  70. package/web/sol-modal.js +377 -0
  71. package/web/sol-pod-extras.js +17 -0
  72. package/web/sol-pod-ops.js +680 -0
  73. package/web/sol-pod.js +1039 -0
  74. package/web/sol-query.js +546 -0
  75. package/web/sol-rolodex.js +95 -0
  76. package/web/sol-search.js +402 -0
  77. package/web/sol-settings.js +199 -0
  78. package/web/sol-solidos.js +93 -0
  79. package/web/sol-tabs.js +445 -0
  80. package/web/sol-time.js +194 -0
  81. package/web/sol-tree-edit.js +492 -0
  82. package/web/sol-wac.js +456 -0
  83. package/web/sol-weather.js +337 -0
  84. package/web/sol-window.js +142 -0
  85. package/web/styles/buttons-css.js +108 -0
  86. package/web/styles/help.css +242 -0
  87. package/web/styles/root.css +112 -0
  88. package/web/styles/sol-accordion-css.js +97 -0
  89. package/web/styles/sol-calendar-css.js +154 -0
  90. package/web/styles/sol-feed-css.js +475 -0
  91. package/web/styles/sol-form-css.js +471 -0
  92. package/web/styles/sol-gallery-css.js +181 -0
  93. package/web/styles/sol-include-css.js +95 -0
  94. package/web/styles/sol-live-edit-css.js +84 -0
  95. package/web/styles/sol-live-edit.css +101 -0
  96. package/web/styles/sol-login-css.js +116 -0
  97. package/web/styles/sol-menu-css.js +145 -0
  98. package/web/styles/sol-modal-css.js +134 -0
  99. package/web/styles/sol-pod-css.js +187 -0
  100. package/web/styles/sol-pod-modal-css.js +203 -0
  101. package/web/styles/sol-query-css.js +140 -0
  102. package/web/styles/sol-query-help.css +267 -0
  103. package/web/styles/sol-query-one-pager.css +67 -0
  104. package/web/styles/sol-search-css.js +157 -0
  105. package/web/styles/sol-solidos-css.js +7 -0
  106. package/web/styles/sol-tabs-css.js +114 -0
  107. package/web/styles/sol-time-css.js +30 -0
  108. package/web/styles/sol-wac-css.js +73 -0
  109. package/web/styles/sol-weather-css.js +59 -0
  110. package/web/styles/solid-logo.svg +9 -0
  111. package/web/styles/view-accordion-css.js +66 -0
  112. package/web/styles/view-anchorlist-css.js +22 -0
  113. package/web/styles/view-autocomplete-css.js +59 -0
  114. package/web/styles/view-rolodex-css.js +102 -0
  115. package/web/styles/view-select-css.js +21 -0
  116. package/web/utils/calendar-fetch.js +388 -0
  117. package/web/utils/code-mirror-editor.js +82 -0
  118. package/web/utils/commons-fetch.js +108 -0
  119. package/web/utils/feed-edit.js +159 -0
  120. package/web/utils/feed-edit.smoke.mjs +74 -0
  121. package/web/utils/feed-fetch.js +573 -0
  122. package/web/utils/live-edit-help/csv.js +64 -0
  123. package/web/utils/live-edit-help/graphviz.js +41 -0
  124. package/web/utils/live-edit-help/jsonld.js +55 -0
  125. package/web/utils/live-edit-help/markdown.js +52 -0
  126. package/web/utils/live-edit-help/mermaid.js +48 -0
  127. package/web/utils/live-edit-help/turtle.js +85 -0
  128. package/web/utils/rdf-config.js +125 -0
  129. package/web/utils/renderers/csv.js +124 -0
  130. package/web/utils/renderers/d3-force.js +82 -0
  131. package/web/utils/renderers/graphviz.js +13 -0
  132. package/web/utils/renderers/html.js +10 -0
  133. package/web/utils/renderers/jsonld.js +63 -0
  134. package/web/utils/renderers/markdown.js +19 -0
  135. package/web/utils/renderers/mermaid.js +54 -0
  136. package/web/utils/renderers/turtle.js +51 -0
  137. package/web/utils/sol-query-triple-patterns.js +151 -0
  138. package/web/utils/sol-query-ui.js +250 -0
  139. package/web/utils/sol-query-views.js +32 -0
  140. package/web/views/_helpers.js +34 -0
  141. package/web/views/accordion.js +133 -0
  142. package/web/views/anchorlist.js +59 -0
  143. package/web/views/auto-complete.js +183 -0
  144. package/web/views/dl.js +38 -0
  145. package/web/views/list.js +19 -0
  146. package/web/views/menu.js +56 -0
  147. package/web/views/rolodex.js +126 -0
  148. package/web/views/select.js +79 -0
  149. package/web/views/table.js +73 -0
  150. package/web/views/tabs.js +57 -0
@@ -0,0 +1,59 @@
1
+ // Styles for <sol-weather>'s shadow root. Exports the raw `CSS` string plus
2
+ // a constructable `sheet`. Compact one-line card by default; shows the
3
+ // weather icon, current temperature, and rain probability for the next
4
+ // `hours-window` hours.
5
+ import { sheetFrom } from '../../core/adopt.js';
6
+
7
+ export const CSS = `
8
+ :host {
9
+ display: inline-block;
10
+ font-family: var(--font-ui, system-ui, sans-serif);
11
+ font-size: var(--font-size, 1rem);
12
+ color: var(--text, #212121);
13
+ }
14
+
15
+ .card {
16
+ display: inline-flex;
17
+ align-items: center;
18
+ gap: .5rem;
19
+ white-space: nowrap;
20
+ padding: .25rem 0;
21
+ }
22
+
23
+ .icon { font-size: 1.4em; line-height: 1; flex: 0 0 auto; }
24
+ .place {
25
+ color: var(--text-muted, #7f8c8d);
26
+ max-width: 12rem;
27
+ overflow: hidden;
28
+ text-overflow: ellipsis;
29
+ }
30
+ .temp { font-variant-numeric: tabular-nums; }
31
+ .stat {
32
+ color: var(--text-muted, #7f8c8d);
33
+ font-size: .85em;
34
+ font-variant-numeric: tabular-nums;
35
+ }
36
+ .desc {
37
+ color: var(--text-muted, #7f8c8d);
38
+ font-size: .85em;
39
+ max-width: 12rem;
40
+ overflow: hidden;
41
+ text-overflow: ellipsis;
42
+ }
43
+
44
+ .error {
45
+ color: var(--error, #c00);
46
+ font-size: .85em;
47
+ padding: .25rem .5rem;
48
+ background: color-mix(in srgb, var(--error, #e74c3c) 10%, transparent);
49
+ border-radius: var(--radius-sm, 4px);
50
+ }
51
+ .error[hidden] { display: none; }
52
+
53
+ /* Compact mode (default) hides the verbose textual description; expose
54
+ it through ::part(desc) { display: inline } if a caller wants it. */
55
+ .desc { display: none; }
56
+ `;
57
+
58
+ export const sheet = sheetFrom(CSS);
59
+ export default sheet;
@@ -0,0 +1,9 @@
1
+ <svg width="352" height="322" xmlns="http://www.w3.org/2000/svg">
2
+ <g fill-rule="nonzero" fill="none">
3
+ <path d="M87.97296 282.3527L27.24133 177.02207c-5.62041-9.75765-5.62041-21.77908 0-31.53674L87.97296 40.2328c5.64643-9.78367 16.08061-15.79439 27.32143-15.79439h121.3852c11.26684 0 21.72704 6.01072 27.32143 15.7944l60.75765 105.30458c5.62041 9.75766 5.62041 21.77909 0 31.53674l-60.73163 105.33061c-5.64643 9.78367-16.08061 15.79439-27.32143 15.79439H115.37245c-11.31888-.05204-21.72704-6.08878-27.3995-15.84643z" fill="#FFF"/>
4
+ <path d="M93.15102 275.19708l-57.1148-99.0597c-5.30816-9.1852-5.30816-20.50408 0-29.66326l57.1148-99.08572c5.33418-9.21122 15.14388-14.85765 25.73418-14.85765h114.2296c10.5903 0 20.42602 5.64643 25.73418 14.85765l57.16684 99.03368c5.30816 9.1852 5.30816 20.50408 0 29.66326L258.875 275.2231c-5.33418 9.21122-15.14388 14.85765-25.73418 14.85765H118.93724c-10.64234 0-20.45204-5.67245-25.78622-14.88367z" fill="#7C4DFF"/>
5
+ <path d="M118.46888 142.2328h117.53418c1.48316 0 2.65408-1.19695 2.65408-2.65409v-22.03928c0-14.6495-11.89132-26.54085-26.54081-26.54085h-70.56735c-20.5301-.026-37.15722 16.60105-37.15722 37.13115-.02594 7.83214 6.271 14.10306 14.07712 14.10306zM129.99592 239.60116H200.225c21.20663 0 38.43214-17.22551 38.43214-38.43214 0-7.07755-5.72449-12.82806-12.82806-12.82806H106.94184c-1.45715 0-2.55005 1.17091-2.55005 2.55v23.05408c-.02597 14.18112 11.47505 25.65612 25.60413 25.65612z" fill="#F7F7F7"/>
6
+ <path d="M109.59592 139.3185l87.66275 87.66276c5.80255 5.80255 15.19592 5.80255 20.99847 0l15.19592-15.19592c5.80255-5.80255 5.80255-15.19591 0-20.99847l-87.63673-87.66275c-5.80255-5.80255-15.19592-5.80255-20.99847 0l-15.19592 15.19592c-5.8546 5.80255-5.8546 15.22194-.02602 20.99847z" fill="#F7F7F7"/>
7
+ <path fill="#444" opacity=".3" d="M198.6898 228.46443l-51.4944-40.12347h11.39695zM144.35918 101.66698l40.56582 40.56581h13.7648z"/>
8
+ </g>
9
+ </svg>
@@ -0,0 +1,66 @@
1
+ import { sheetFrom } from '../../core/adopt.js';
2
+
3
+ export const CSS = `
4
+ .sol-view-accordion {
5
+ font-family: var(--font-ui, system-ui, sans-serif);
6
+ color: var(--text, #212121);
7
+ }
8
+ .sol-view-accordion details {
9
+ border: 1px solid var(--border, #e0e0e0);
10
+ border-radius: 4px;
11
+ margin-bottom: .35rem;
12
+ background: var(--surface, #fff);
13
+ }
14
+ .sol-view-accordion summary {
15
+ padding: .5rem .75rem;
16
+ cursor: pointer;
17
+ font-weight: 600;
18
+ background: var(--hover, #f7f7f7);
19
+ border-radius: 4px;
20
+ list-style: none;
21
+ }
22
+ .sol-view-accordion details[open] summary {
23
+ border-bottom: 1px solid var(--border, #e0e0e0);
24
+ border-radius: 4px 4px 0 0;
25
+ }
26
+ .sol-view-accordion summary::-webkit-details-marker { display: none; }
27
+ .sol-view-accordion summary::before {
28
+ content: '▸';
29
+ display: inline-block;
30
+ width: 1em;
31
+ transition: transform .15s;
32
+ }
33
+ .sol-view-accordion details[open] > summary::before {
34
+ transform: rotate(90deg);
35
+ }
36
+ .sol-view-accordion dl {
37
+ margin: 0;
38
+ padding: .6rem .85rem;
39
+ display: grid;
40
+ grid-template-columns: max-content 1fr;
41
+ gap: .25rem .75rem;
42
+ align-items: baseline;
43
+ }
44
+ .sol-view-accordion dt,
45
+ .sol-view-accordion dd {
46
+ font-size: var(--small-font, 16px);
47
+ line-height: var(--line-height-base, 1.5);
48
+ }
49
+ .sol-view-accordion dt {
50
+ color: var(--text-muted, #666);
51
+ font-weight: var(--font-weight-bold, 600);
52
+ }
53
+ .sol-view-accordion dd {
54
+ margin: 0;
55
+ word-break: break-word;
56
+ }
57
+ .sol-view-accordion .accordion-body {
58
+ padding: .6rem .85rem;
59
+ }
60
+ .sol-view-accordion a {
61
+ color: var(--accent, #0066cc);
62
+ text-decoration: none;
63
+ }
64
+ .sol-view-accordion a:hover { text-decoration: underline; }
65
+ `;
66
+ export const sheet = sheetFrom(CSS);
@@ -0,0 +1,22 @@
1
+ import { sheetFrom } from '../../core/adopt.js';
2
+
3
+ export const CSS = `
4
+ .sol-view-anchorlist {
5
+ list-style: none;
6
+ padding: 0;
7
+ margin: 0;
8
+ font-family: var(--font-ui, system-ui, sans-serif);
9
+ color: var(--text, #212121);
10
+ }
11
+ .sol-view-anchorlist li {
12
+ padding: .3rem .5rem;
13
+ border-bottom: 1px solid var(--border, #eee);
14
+ }
15
+ .sol-view-anchorlist li:last-child { border-bottom: none; }
16
+ .sol-view-anchorlist a {
17
+ color: var(--accent, #0066cc);
18
+ text-decoration: none;
19
+ }
20
+ .sol-view-anchorlist a:hover { text-decoration: underline; }
21
+ `;
22
+ export const sheet = sheetFrom(CSS);
@@ -0,0 +1,59 @@
1
+ import { sheetFrom } from '../../core/adopt.js';
2
+ import { BTN_CSS } from './buttons-css.js';
3
+
4
+ export const CSS = BTN_CSS + `
5
+ .sol-view-autocomplete {
6
+ display: flex;
7
+ flex-direction: column;
8
+ gap: 0.5rem;
9
+ width: 100%;
10
+ max-width: 100%;
11
+ font-family: var(--font-ui, system-ui, sans-serif);
12
+ color: var(--text, #212121);
13
+ }
14
+ .ac-input-wrapper {
15
+ width: 100%;
16
+ display: flex;
17
+ gap: 0.5rem;
18
+ }
19
+ .sol-view-autocomplete input {
20
+ flex: 1;
21
+ padding: .5rem .65rem;
22
+ font: inherit;
23
+ background: var(--surface, #fff);
24
+ color: var(--text, #212121);
25
+ border: 1px solid var(--border, #ccc);
26
+ border-radius: 4px;
27
+ box-sizing: border-box;
28
+ }
29
+ .sol-view-autocomplete input:focus {
30
+ outline: 2px solid var(--accent, #4a9eff);
31
+ outline-offset: 1px;
32
+ border-color: var(--accent, #4a9eff);
33
+ }
34
+ .ac-go-button { padding: .5rem 1rem; }
35
+ .ac-list-wrapper {
36
+ width: 100%;
37
+ background: var(--surface, #fff);
38
+ border: 1px solid var(--border, #ccc);
39
+ border-radius: 4px;
40
+ max-height: 220px;
41
+ overflow-y: auto;
42
+ box-shadow: 0 4px 12px var(--shadow, rgba(0,0,0,.08));
43
+ }
44
+ .sol-view-autocomplete .ac-list {
45
+ margin: 0;
46
+ padding: 0;
47
+ list-style: none;
48
+ }
49
+ .sol-view-autocomplete .ac-list li {
50
+ padding: .4rem .65rem;
51
+ cursor: pointer;
52
+ color: var(--text, #000);
53
+ }
54
+ .sol-view-autocomplete .ac-list li.active,
55
+ .sol-view-autocomplete .ac-list li:hover {
56
+ background: var(--hover, #eaf2fb);
57
+ }
58
+ `;
59
+ export const sheet = sheetFrom(CSS);
@@ -0,0 +1,102 @@
1
+ import { sheetFrom } from '../../core/adopt.js';
2
+ import { BTN_CSS } from './buttons-css.js';
3
+
4
+ export const CSS = BTN_CSS + `
5
+ .sol-view-rolodex {
6
+ display: inline-block;
7
+ min-width: 260px;
8
+ max-width: 100%;
9
+ outline: none;
10
+ font-family: var(--font-ui, system-ui, sans-serif);
11
+ color: var(--text, #212121);
12
+ }
13
+ .sol-view-rolodex:focus-visible .rolodex-card {
14
+ box-shadow: 0 0 0 2px var(--accent, #4a9eff);
15
+ }
16
+ .rolodex-nav {
17
+ display: flex;
18
+ align-items: center;
19
+ justify-content: space-between;
20
+ gap: .5rem;
21
+ margin-bottom: .4rem;
22
+ }
23
+ /* Rolodex nav buttons use .sol-btn .sol-btn-icon. */
24
+ .rolodex-counter {
25
+ font-size: .85em;
26
+ color: var(--text-muted, #666);
27
+ }
28
+ .rolodex-card {
29
+ border: 1px solid var(--border, #e0e0e0);
30
+ border-radius: 6px;
31
+ background: var(--surface, #fff);
32
+ padding: .85rem 1rem;
33
+ box-shadow: 0 1px 3px var(--shadow, rgba(0,0,0,.05));
34
+ cursor: pointer;
35
+ transition: box-shadow .15s;
36
+ }
37
+ .rolodex-card:hover { box-shadow: 0 2px 8px var(--shadow, rgba(0,0,0,.1)); }
38
+ .rolodex-card dl {
39
+ margin: 0;
40
+ display: grid;
41
+ grid-template-columns: max-content 1fr;
42
+ gap: .3rem .85rem;
43
+ align-items: baseline;
44
+ }
45
+ .rolodex-card dt,
46
+ .rolodex-card dd {
47
+ font-size: var(--small-font, 16px);
48
+ line-height: var(--line-height-base, 1.5);
49
+ }
50
+ .rolodex-card dt {
51
+ text-transform: uppercase;
52
+ letter-spacing: .03em;
53
+ color: var(--text-muted, #888);
54
+ font-weight: var(--font-weight-bold, 600);
55
+ }
56
+ .rolodex-card dd {
57
+ margin: 0;
58
+ word-break: break-word;
59
+ }
60
+ .rolodex-card a { color: var(--accent, #0066cc); text-decoration: none; }
61
+ .rolodex-card a:hover { text-decoration: underline; }
62
+ .rolodex-reorder {
63
+ display: flex;
64
+ gap: .25rem;
65
+ align-items: center;
66
+ justify-content: flex-end;
67
+ margin-bottom: .4rem;
68
+ }
69
+ .rolodex-reorder-btn[disabled] { opacity: .35; cursor: not-allowed; }
70
+ .rolodex-pos {
71
+ min-width: 1.75em;
72
+ padding: .1em .45em;
73
+ text-align: center;
74
+ font-variant-numeric: tabular-nums;
75
+ background: var(--focus-bg, #e3f2fd);
76
+ color: var(--accent-dark, #1976d2);
77
+ border-radius: var(--radius-sm, 4px);
78
+ font-size: .9em;
79
+ }
80
+ .rolodex-reorder-hint {
81
+ font-size: .8em;
82
+ color: var(--text-muted, #888);
83
+ font-style: italic;
84
+ margin-right: .35rem;
85
+ }
86
+ /* Jump box: full width of the form it sits above; no native datalist caret. */
87
+ .rolodex-jump { width: 100%; }
88
+ .rolodex-jump-input {
89
+ width: 100%;
90
+ box-sizing: border-box;
91
+ margin: .25rem 0 .5rem;
92
+ padding: .4em .6em;
93
+ border: 1px solid var(--border, #ccc);
94
+ border-radius: var(--radius-sm, 4px);
95
+ font: inherit;
96
+ background: var(--bg, #fff);
97
+ color: inherit;
98
+ }
99
+ .rolodex-jump-input::-webkit-calendar-picker-indicator { display: none !important; }
100
+ .rolodex-jump-input::-webkit-list-button { display: none !important; }
101
+ `;
102
+ export const sheet = sheetFrom(CSS);
@@ -0,0 +1,21 @@
1
+ import { sheetFrom } from '../../core/adopt.js';
2
+
3
+ export const CSS = `
4
+ .sol-view-select {
5
+ padding: .45rem .6rem;
6
+ font: inherit;
7
+ font-family: var(--font-ui, system-ui, sans-serif);
8
+ color: var(--text, #212121);
9
+ background: var(--surface, #fff);
10
+ border: 1px solid var(--border, #ccc);
11
+ border-radius: 4px;
12
+ min-width: 240px;
13
+ max-width: 100%;
14
+ }
15
+ .sol-view-select:focus {
16
+ outline: 2px solid var(--accent, #4a9eff);
17
+ outline-offset: 1px;
18
+ border-color: var(--accent, #4a9eff);
19
+ }
20
+ `;
21
+ export const sheet = sheetFrom(CSS);