@livenetworks/ashlar 1.6.1 → 2.0.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.
- package/LICENSE +641 -0
- package/README.md +202 -86
- package/{js → components}/COMPONENTS.md +1116 -1108
- package/{js → components}/index.js +81 -58
- package/{js → components}/ln-accordion/README.md +7 -6
- package/components/ln-accordion/ln-accordion-dev.scss +8 -0
- package/components/ln-accordion/ln-accordion.js +1 -0
- package/components/ln-accordion/ln-accordion.schema.json +30 -0
- package/components/ln-accordion/ln-accordion.scss +8 -0
- package/{js → components}/ln-accordion/src/ln-accordion.js +8 -2
- package/{js → components}/ln-ajax/README.md +171 -160
- package/components/ln-ajax/ln-ajax-dev.scss +8 -0
- package/components/ln-ajax/ln-ajax.js +1 -0
- package/components/ln-ajax/ln-ajax.schema.json +30 -0
- package/{js → components}/ln-ajax/src/ln-ajax.js +65 -30
- package/{js → components}/ln-api-connector/README.md +27 -5
- package/components/ln-api-connector/ln-api-connector.js +1 -0
- package/components/ln-api-connector/ln-api-connector.schema.json +96 -0
- package/components/ln-api-connector/src/connector-core.js +97 -0
- package/components/ln-api-connector/src/ln-api-connector.js +447 -0
- package/{js → components}/ln-api-queue/README.md +12 -9
- package/components/ln-api-queue/ln-api-queue.js +1 -0
- package/components/ln-api-queue/ln-api-queue.schema.json +34 -0
- package/{js → components}/ln-api-queue/src/ln-api-queue.js +33 -14
- package/{js → components}/ln-api-queue/src/queue-storage.js +7 -3
- package/{js → components}/ln-autoresize/README.md +129 -127
- package/components/ln-autoresize/ln-autoresize-dev.scss +8 -0
- package/components/ln-autoresize/ln-autoresize.js +1 -0
- package/components/ln-autoresize/ln-autoresize.schema.json +22 -0
- package/{js → components}/ln-autoresize/src/ln-autoresize.js +8 -1
- package/{js → components}/ln-autosave/README.md +127 -124
- package/components/ln-autosave/ln-autosave-dev.scss +13 -0
- package/components/ln-autosave/ln-autosave.js +1 -0
- package/components/ln-autosave/ln-autosave.schema.json +48 -0
- package/components/ln-autosave/src/autosave-model.js +34 -0
- package/{js → components}/ln-autosave/src/ln-autosave.js +65 -58
- package/components/ln-chart/README.md +145 -0
- package/components/ln-chart/ln-chart-dev.scss +20 -0
- package/components/ln-chart/ln-chart.js +1 -0
- package/components/ln-chart/ln-chart.schema.json +146 -0
- package/components/ln-chart/ln-chart.scss +8 -0
- package/components/ln-chart/src/chart-model.js +154 -0
- package/components/ln-chart/src/ln-chart.js +176 -0
- package/{js → components}/ln-circular-progress/README.md +15 -14
- package/components/ln-circular-progress/ln-circular-progress-dev.scss +8 -0
- package/components/ln-circular-progress/ln-circular-progress.js +1 -0
- package/components/ln-circular-progress/ln-circular-progress.schema.json +42 -0
- package/{js → components}/ln-circular-progress/src/ln-circular-progress.js +32 -50
- package/{js → components}/ln-confirm/README.md +69 -18
- package/components/ln-confirm/ln-confirm-dev.scss +24 -0
- package/components/ln-confirm/ln-confirm.js +1 -0
- package/components/ln-confirm/ln-confirm.schema.json +66 -0
- package/components/ln-confirm/ln-confirm.scss +24 -0
- package/{js → components}/ln-confirm/src/ln-confirm.js +180 -171
- package/{js → components}/ln-core/README.md +374 -149
- package/components/ln-core/attrs.js +273 -0
- package/components/ln-core/compare.js +40 -0
- package/components/ln-core/crypto.js +265 -0
- package/components/ln-core/date.js +50 -0
- package/components/ln-core/dom.js +115 -0
- package/components/ln-core/events.js +122 -0
- package/components/ln-core/form.js +136 -0
- package/{js → components}/ln-core/hash.js +149 -92
- package/components/ln-core/helpers.js +33 -0
- package/components/ln-core/http.js +48 -0
- package/components/ln-core/index.js +11 -0
- package/components/ln-core/lifecycle.js +403 -0
- package/components/ln-core/ln-core.schema.json +109 -0
- package/components/ln-core/locale.js +55 -0
- package/components/ln-core/matching.js +78 -0
- package/components/ln-core/number.js +125 -0
- package/components/ln-core/progress.js +30 -0
- package/components/ln-core/template.js +206 -0
- package/{js → components}/ln-core/window-cache.js +247 -213
- package/{js → components}/ln-couchdb-connector/README.md +7 -5
- package/components/ln-couchdb-connector/ln-couchdb-connector.js +1 -0
- package/components/ln-couchdb-connector/ln-couchdb-connector.schema.json +50 -0
- package/{js → components}/ln-couchdb-connector/src/ln-couchdb-connector.js +29 -43
- package/{js → components}/ln-data-coordinator/README.md +109 -73
- package/components/ln-data-coordinator/ln-data-coordinator-dev.scss +8 -0
- package/components/ln-data-coordinator/ln-data-coordinator.js +1 -0
- package/components/ln-data-coordinator/ln-data-coordinator.schema.json +196 -0
- package/components/ln-data-coordinator/src/data-read-policy.js +41 -0
- package/{js → components}/ln-data-coordinator/src/ln-data-coordinator.js +411 -154
- package/{js → components}/ln-data-coordinator/src/mutation-receipts.js +0 -5
- package/{js → components}/ln-data-store/README.md +42 -17
- package/components/ln-data-store/ln-data-store-dev.scss +13 -0
- package/components/ln-data-store/ln-data-store.js +1 -0
- package/components/ln-data-store/ln-data-store.schema.json +84 -0
- package/components/ln-data-store/src/data-store-model.js +155 -0
- package/{js → components}/ln-data-store/src/ln-data-store.js +407 -105
- package/components/ln-data-store/src/window-index.js +119 -0
- package/{js → components}/ln-date/README.md +17 -7
- package/{js → components}/ln-date/ln-date-dev.scss +14 -14
- package/components/ln-date/ln-date.js +1 -0
- package/components/ln-date/ln-date.schema.json +92 -0
- package/components/ln-date/src/date-model.js +186 -0
- package/components/ln-date/src/ln-date.js +486 -0
- package/components/ln-debug/README.md +132 -0
- package/components/ln-debug/ln-debug.js +1 -0
- package/components/ln-debug/ln-debug.schema.json +28 -0
- package/components/ln-debug/src/console-sink.js +19 -0
- package/components/ln-debug/src/debug-verifier.js +331 -0
- package/components/ln-debug/src/gate.js +95 -0
- package/components/ln-debug/src/generated-attributes.js +299 -0
- package/components/ln-debug/src/ln-debug.js +60 -0
- package/{js → components}/ln-dropdown/README.md +150 -140
- package/components/ln-dropdown/ln-dropdown-dev.scss +13 -0
- package/components/ln-dropdown/ln-dropdown.js +1 -0
- package/components/ln-dropdown/ln-dropdown.schema.json +90 -0
- package/components/ln-dropdown/ln-dropdown.scss +18 -0
- package/{js → components}/ln-dropdown/src/ln-dropdown.js +114 -11
- package/{js → components}/ln-editor/README.md +11 -9
- package/components/ln-editor/ln-editor-dev.scss +18 -0
- package/components/ln-editor/ln-editor.js +1 -0
- package/components/ln-editor/ln-editor.schema.json +58 -0
- package/components/ln-editor/ln-editor.scss +13 -0
- package/{js → components}/ln-editor/src/ln-editor.js +59 -11
- package/{js → components}/ln-external-links/README.md +10 -8
- package/components/ln-external-links/ln-external-links.js +1 -0
- package/components/ln-external-links/ln-external-links.schema.json +18 -0
- package/{js → components}/ln-external-links/src/ln-external-links.js +13 -11
- package/{js → components}/ln-fill/README.md +6 -8
- package/components/ln-fill/ln-fill.js +1 -0
- package/components/ln-fill/ln-fill.schema.json +23 -0
- package/{js → components}/ln-fill/src/ln-fill.js +7 -1
- package/components/ln-filter/README.md +131 -0
- package/components/ln-filter/ln-filter-dev.scss +13 -0
- package/components/ln-filter/ln-filter.js +1 -0
- package/components/ln-filter/ln-filter.schema.json +153 -0
- package/components/ln-filter/src/filter-model.js +185 -0
- package/components/ln-filter/src/ln-filter.js +435 -0
- package/{js → components}/ln-form/README.md +260 -264
- package/components/ln-form/ln-form-dev.scss +8 -0
- package/components/ln-form/ln-form.js +1 -0
- package/components/ln-form/ln-form.schema.json +45 -0
- package/{js → components}/ln-form/src/ln-form.js +107 -99
- package/{js → components}/ln-http/README.md +11 -6
- package/components/ln-http/ln-http.js +1 -0
- package/components/ln-http/ln-http.schema.json +6 -0
- package/components/ln-http/src/http-core.js +51 -0
- package/{js → components}/ln-http/src/ln-http.js +28 -33
- package/{js → components}/ln-icon/README.md +16 -9
- package/components/ln-icon/ln-icon.schema.json +6 -0
- package/components/ln-include/README.md +75 -0
- package/components/ln-include/ln-include-dev.scss +13 -0
- package/components/ln-include/ln-include.js +1 -0
- package/components/ln-include/ln-include.schema.json +23 -0
- package/components/ln-include/src/ln-include.js +111 -0
- package/components/ln-key/README.md +130 -0
- package/components/ln-key/ln-key-dev.scss +18 -0
- package/components/ln-key/ln-key.js +1 -0
- package/components/ln-key/ln-key.schema.json +56 -0
- package/components/ln-key/src/key-model.js +146 -0
- package/components/ln-key/src/ln-key.js +201 -0
- package/{js → components}/ln-link/README.md +7 -9
- package/components/ln-link/ln-link-dev.scss +8 -0
- package/components/ln-link/ln-link.js +1 -0
- package/components/ln-link/ln-link.schema.json +22 -0
- package/{js → components}/ln-link/src/ln-link.js +16 -11
- package/components/ln-list/README.md +152 -0
- package/components/ln-list/ln-list-dev.scss +8 -0
- package/components/ln-list/ln-list.js +1 -0
- package/components/ln-list/ln-list.schema.json +166 -0
- package/components/ln-list/ln-list.scss +25 -0
- package/{js → components}/ln-list/src/ln-list.js +1301 -1216
- package/{js → components}/ln-modal/README.md +13 -10
- package/components/ln-modal/ln-modal-dev.scss +18 -0
- package/components/ln-modal/ln-modal.js +1 -0
- package/components/ln-modal/ln-modal.schema.json +54 -0
- package/components/ln-modal/ln-modal.scss +51 -0
- package/{js → components}/ln-modal/src/ln-modal.js +164 -137
- package/{js → components}/ln-nav/README.md +11 -11
- package/components/ln-nav/ln-nav.js +1 -0
- package/components/ln-nav/ln-nav.schema.json +25 -0
- package/{js → components}/ln-nav/src/ln-nav.js +25 -14
- package/components/ln-number/README.md +205 -0
- package/{js → components}/ln-number/ln-number-dev.scss +13 -13
- package/components/ln-number/ln-number.js +1 -0
- package/components/ln-number/ln-number.schema.json +63 -0
- package/components/ln-number/src/ln-number.js +400 -0
- package/components/ln-number/src/number-model.js +31 -0
- package/components/ln-obfuscator/README.md +60 -0
- package/components/ln-obfuscator/ln-obfuscator.js +1 -0
- package/components/ln-obfuscator/ln-obfuscator.schema.json +49 -0
- package/components/ln-obfuscator/src/ln-obfuscator.js +159 -0
- package/components/ln-obfuscator/src/obfuscator-model.js +250 -0
- package/{js → components}/ln-options/README.md +3 -1
- package/components/ln-options/ln-options-dev.scss +13 -0
- package/components/ln-options/ln-options.js +1 -0
- package/components/ln-options/ln-options.schema.json +41 -0
- package/{js → components}/ln-options/src/ln-options.js +13 -5
- package/components/ln-persist/README.md +151 -0
- package/components/ln-persist/ln-persist.js +1 -0
- package/components/ln-persist/ln-persist.schema.json +28 -0
- package/components/ln-persist/src/ln-persist.js +83 -0
- package/components/ln-picklist/README.md +230 -0
- package/components/ln-picklist/ln-picklist-dev.scss +22 -0
- package/components/ln-picklist/ln-picklist.js +1 -0
- package/components/ln-picklist/ln-picklist.schema.json +49 -0
- package/components/ln-picklist/src/ln-picklist.js +228 -0
- package/{js → components}/ln-popover/README.md +164 -162
- package/components/ln-popover/ln-popover-dev.scss +13 -0
- package/components/ln-popover/ln-popover.js +1 -0
- package/components/ln-popover/ln-popover.schema.json +82 -0
- package/components/ln-popover/ln-popover.scss +18 -0
- package/{js → components}/ln-popover/src/ln-popover.js +42 -36
- package/{js → components}/ln-progress/README.md +410 -413
- package/components/ln-progress/ln-progress-dev.scss +8 -0
- package/components/ln-progress/ln-progress.js +1 -0
- package/components/ln-progress/ln-progress.schema.json +40 -0
- package/components/ln-progress/src/ln-progress.js +91 -0
- package/components/ln-progress/src/progress-model.js +20 -0
- package/{js → components}/ln-router/README.md +443 -432
- package/components/ln-router/ln-router-dev.scss +13 -0
- package/components/ln-router/ln-router.js +1 -0
- package/components/ln-router/ln-router.schema.json +68 -0
- package/{js → components}/ln-router/src/ln-router.js +585 -539
- package/components/ln-router/src/router-model.js +50 -0
- package/components/ln-scroll/README.md +45 -0
- package/components/ln-scroll/ln-scroll.js +1 -0
- package/components/ln-scroll/ln-scroll.schema.json +85 -0
- package/components/ln-scroll/src/ln-scroll.js +150 -0
- package/components/ln-search/README.md +188 -0
- package/components/ln-search/ln-search-dev.scss +13 -0
- package/components/ln-search/ln-search.js +1 -0
- package/components/ln-search/ln-search.schema.json +103 -0
- package/components/ln-search/src/ln-search.js +330 -0
- package/{js → components}/ln-slug/README.md +6 -3
- package/components/ln-slug/ln-slug-dev.scss +18 -0
- package/components/ln-slug/ln-slug.js +1 -0
- package/components/ln-slug/ln-slug.schema.json +23 -0
- package/{js → components}/ln-slug/src/ln-slug.js +20 -13
- package/components/ln-slug/src/slug-model.js +21 -0
- package/{js → components}/ln-sort/README.md +178 -170
- package/{js → components}/ln-sort/ln-sort-dev.scss +8 -8
- package/components/ln-sort/ln-sort.js +1 -0
- package/components/ln-sort/ln-sort.schema.json +104 -0
- package/components/ln-sort/src/ln-sort.js +321 -0
- package/components/ln-sort/src/sort-model.js +117 -0
- package/{js → components}/ln-sortable/README.md +7 -11
- package/components/ln-sortable/ln-sortable-dev.scss +13 -0
- package/components/ln-sortable/ln-sortable.js +1 -0
- package/components/ln-sortable/ln-sortable.schema.json +36 -0
- package/{js → components}/ln-sortable/src/ln-sortable.js +8 -13
- package/{js → components}/ln-stat/README.md +3 -1
- package/components/ln-stat/ln-stat-dev.scss +8 -0
- package/components/ln-stat/ln-stat.js +1 -0
- package/components/ln-stat/ln-stat.schema.json +32 -0
- package/{js → components}/ln-stat/src/ln-stat.js +14 -18
- package/components/ln-stat/src/stat-model.js +28 -0
- package/{js → components}/ln-table/README.md +37 -24
- package/{js → components}/ln-table/ln-table-dev.scss +17 -17
- package/components/ln-table/ln-table.js +1 -0
- package/components/ln-table/ln-table.schema.json +211 -0
- package/components/ln-table/ln-table.scss +15 -0
- package/{js → components}/ln-table/src/ln-table.js +1365 -1493
- package/components/ln-table/src/table-model.js +98 -0
- package/components/ln-table-coordinator/README.md +61 -0
- package/components/ln-table-coordinator/ln-table-coordinator.js +1 -0
- package/components/ln-table-coordinator/ln-table-coordinator.schema.json +93 -0
- package/components/ln-table-coordinator/src/ln-table-coordinator.js +193 -0
- package/{js → components}/ln-tabs/README.md +32 -14
- package/components/ln-tabs/ln-tabs-dev.scss +24 -0
- package/components/ln-tabs/ln-tabs.js +1 -0
- package/components/ln-tabs/ln-tabs.schema.json +75 -0
- package/components/ln-tabs/ln-tabs.scss +8 -0
- package/components/ln-tabs/src/ln-tabs.js +207 -0
- package/components/ln-tabs/src/tabs-model.js +82 -0
- package/{js → components}/ln-time/README.md +96 -95
- package/components/ln-time/ln-time-dev.scss +13 -0
- package/components/ln-time/ln-time.js +1 -0
- package/components/ln-time/ln-time.schema.json +38 -0
- package/{js → components}/ln-time/src/ln-time.js +206 -223
- package/components/ln-time/src/time-model.js +64 -0
- package/{js → components}/ln-toast/README.md +23 -5
- package/components/ln-toast/ln-toast-dev.scss +8 -0
- package/components/ln-toast/ln-toast.js +1 -0
- package/components/ln-toast/ln-toast.schema.json +65 -0
- package/components/ln-toast/ln-toast.scss +59 -0
- package/{js → components}/ln-toast/src/ln-toast.js +233 -232
- package/{js → components}/ln-toggle/README.md +198 -196
- package/{js → components}/ln-toggle/ln-toggle-dev.scss +13 -13
- package/components/ln-toggle/ln-toggle.js +1 -0
- package/components/ln-toggle/ln-toggle.schema.json +52 -0
- package/components/ln-toggle/ln-toggle.scss +37 -0
- package/{js → components}/ln-toggle/src/ln-toggle.js +61 -46
- package/{js → components}/ln-tooltip/README.md +6 -6
- package/{js → components}/ln-tooltip/ln-tooltip-dev.scss +9 -9
- package/components/ln-tooltip/ln-tooltip.js +1 -0
- package/components/ln-tooltip/ln-tooltip.schema.json +86 -0
- package/components/ln-tooltip/ln-tooltip.scss +9 -0
- package/{js → components}/ln-tooltip/src/ln-tooltip.js +14 -3
- package/{js → components}/ln-translations/README.md +3 -1
- package/components/ln-translations/ln-translations-dev.scss +13 -0
- package/components/ln-translations/ln-translations.js +1 -0
- package/components/ln-translations/ln-translations.schema.json +120 -0
- package/{js → components}/ln-translations/src/ln-translations.js +25 -10
- package/components/ln-ui-coordinator/README.md +101 -0
- package/components/ln-ui-coordinator/ln-ui-coordinator-dev.scss +8 -0
- package/components/ln-ui-coordinator/ln-ui-coordinator.js +1 -0
- package/components/ln-ui-coordinator/ln-ui-coordinator.schema.json +60 -0
- package/{js/ln-modal-coordinator/src/ln-modal-coordinator.js → components/ln-ui-coordinator/src/ln-ui-coordinator.js} +403 -345
- package/components/ln-upload/README.md +133 -0
- package/components/ln-upload/ln-upload-dev.scss +18 -0
- package/components/ln-upload/ln-upload.js +1 -0
- package/components/ln-upload/ln-upload.schema.json +193 -0
- package/components/ln-upload/ln-upload.scss +20 -0
- package/components/ln-upload/src/ln-upload.js +652 -0
- package/components/ln-upload/src/upload-model.js +78 -0
- package/{js → components}/ln-validate/README.md +182 -180
- package/{js → components}/ln-validate/ln-validate-dev.scss +15 -15
- package/components/ln-validate/ln-validate.js +1 -0
- package/components/ln-validate/ln-validate.schema.json +50 -0
- package/components/ln-validate/ln-validate.scss +7 -0
- package/{js → components}/ln-validate/src/ln-validate.js +23 -45
- package/components/ln-validate/src/validate-model.js +64 -0
- package/components/ln-websocket-connector/README.md +166 -0
- package/components/ln-websocket-connector/ln-websocket-connector.js +1 -0
- package/components/ln-websocket-connector/ln-websocket-connector.schema.json +29 -0
- package/components/ln-websocket-connector/src/ln-websocket-connector.js +279 -0
- package/ln-ashlar.html-data.json +1796 -0
- package/package.json +84 -61
- package/{scss → theme}/base/_global.scss +1 -2
- package/{scss → theme}/base/_reset.scss +1 -1
- package/{scss → theme}/base/_typography.scss +2 -0
- package/theme/brand.css +73 -0
- package/{scss → theme}/components/_app-shell.scss +8 -0
- package/theme/components/_button.scss +24 -0
- package/theme/components/_chart.scss +5 -0
- package/theme/components/_confirm.scss +6 -0
- package/{scss → theme}/components/_date.scss +30 -22
- package/{scss → theme}/components/_dropdown.scss +6 -1
- package/theme/components/_form.scss +140 -0
- package/{scss → theme}/components/_layout.scss +6 -0
- package/{scss → theme}/components/_ln-table.scss +1 -6
- package/theme/components/_picklist.scss +3 -0
- package/{scss → theme}/components/_sort.scss +10 -10
- package/theme/components/_status-badge.scss +6 -0
- package/{scss → theme}/components/_table.scss +16 -0
- package/{scss → theme}/components/_tabs.scss +0 -4
- package/theme/components/_toast.scss +48 -0
- package/{scss → theme}/components/_toggle.scss +1 -1
- package/theme/components/_upload.scss +45 -0
- package/{scss → theme}/config/_breakpoints.scss +1 -1
- package/theme/config/_contrast.scss +128 -0
- package/{scss → theme}/config/_density.scss +191 -205
- package/theme/config/_palette.scss +274 -0
- package/theme/config/_theme.scss +293 -0
- package/{scss → theme}/config/_tokens.scss +285 -441
- package/{scss → theme}/config/mixins/_accordion.scss +1 -1
- package/{scss → theme}/config/mixins/_alert.scss +1 -0
- package/{scss → theme}/config/mixins/_app-shell.scss +4 -2
- package/{scss → theme}/config/mixins/_borders.scss +2 -0
- package/theme/config/mixins/_btn.scss +175 -0
- package/{scss → theme}/config/mixins/_card.scss +55 -46
- package/theme/config/mixins/_chart.scss +82 -0
- package/{scss → theme}/config/mixins/_collapsible.scss +2 -1
- package/{scss → theme}/config/mixins/_colors.scss +8 -14
- package/{scss → theme}/config/mixins/_diagnostics.scss +48 -48
- package/theme/config/mixins/_dropdown.scss +169 -0
- package/{scss → theme}/config/mixins/_editor.scss +0 -7
- package/{scss → theme}/config/mixins/_filter.scss +47 -47
- package/{scss → theme}/config/mixins/_footer.scss +1 -1
- package/{scss → theme}/config/mixins/_form.scss +49 -18
- package/{scss → theme}/config/mixins/_index.scss +62 -61
- package/{scss → theme}/config/mixins/_layout.scss +6 -2
- package/{scss → theme}/config/mixins/_ln-table.scss +31 -10
- package/{scss → theme}/config/mixins/_loader.scss +1 -1
- package/{scss → theme}/config/mixins/_modal.scss +145 -149
- package/{scss → theme}/config/mixins/_motion.scss +13 -0
- package/{scss → theme}/config/mixins/_nav.scss +7 -7
- package/theme/config/mixins/_picklist.scss +66 -0
- package/theme/config/mixins/_popover.scss +96 -0
- package/{scss → theme}/config/mixins/_sidebar.scss +7 -4
- package/{scss → theme}/config/mixins/_sort.scss +43 -42
- package/{scss → theme}/config/mixins/_status-badge.scss +15 -2
- package/{scss → theme}/config/mixins/_table.scss +25 -14
- package/{scss → theme}/config/mixins/_tabs.scss +1 -1
- package/{scss → theme}/config/mixins/_toast.scss +174 -179
- package/{scss → theme}/config/mixins/_tooltip.scss +2 -2
- package/{scss → theme}/config/mixins/_typography.scss +16 -5
- package/{scss → theme}/config/mixins/_upload.scss +8 -6
- package/theme/ln-ashlar-core.scss +24 -0
- package/theme/ln-ashlar-dev.scss +66 -0
- package/theme/ln-ashlar-landing.scss +56 -0
- package/{scss/ln-ashlar.scss → theme/ln-ashlar-theme.scss} +63 -69
- package/theme/ln-ashlar.scss +8 -0
- package/theme/presentation/_bento.scss +151 -0
- package/theme/presentation/_cta.scss +111 -0
- package/theme/presentation/_effects.scss +216 -0
- package/theme/presentation/_features.scss +108 -0
- package/theme/presentation/_footer.scss +129 -0
- package/theme/presentation/_hero.scss +158 -0
- package/theme/presentation/_layout.scss +170 -0
- package/theme/presentation/_navbar.scss +140 -0
- package/theme/presentation/_pricing.scss +262 -0
- package/theme/presentation/_stats.scss +87 -0
- package/theme/presentation/_testimonials.scss +124 -0
- package/theme/presentation/_tokens.scss +39 -0
- package/theme/presentation/_typography.scss +163 -0
- package/{scss → theme}/utilities/_animations.scss +38 -0
- package/{scss → theme}/utilities/_utilities.scss +6 -0
- package/web-types.json +2312 -0
- package/js/ln-accordion/ln-accordion.js +0 -1
- package/js/ln-ajax/ln-ajax.js +0 -1
- package/js/ln-api-connector/ln-api-connector.js +0 -1
- package/js/ln-api-connector/src/ln-api-connector.js +0 -368
- package/js/ln-api-queue/ln-api-queue.js +0 -1
- package/js/ln-autoresize/ln-autoresize.js +0 -1
- package/js/ln-autosave/ln-autosave.js +0 -1
- package/js/ln-circular-progress/ln-circular-progress.js +0 -1
- package/js/ln-confirm/_ln-confirm.scss +0 -24
- package/js/ln-confirm/ln-confirm.js +0 -1
- package/js/ln-core/crypto.js +0 -83
- package/js/ln-core/helpers.js +0 -788
- package/js/ln-core/index.js +0 -7
- package/js/ln-core/persist.js +0 -97
- package/js/ln-couchdb-connector/ln-couchdb-connector.js +0 -1
- package/js/ln-data-coordinator/ln-data-coordinator.js +0 -1
- package/js/ln-data-coordinator/src/data-read-policy.js +0 -18
- package/js/ln-data-store/ln-data-store.js +0 -1
- package/js/ln-date/ln-date.js +0 -1
- package/js/ln-date/src/ln-date.js +0 -603
- package/js/ln-debug/README.md +0 -58
- package/js/ln-debug/ln-debug.js +0 -1
- package/js/ln-debug/src/ln-debug.js +0 -19
- package/js/ln-dropdown/ln-dropdown.js +0 -1
- package/js/ln-dropdown/ln-dropdown.scss +0 -15
- package/js/ln-editor/ln-editor.js +0 -1
- package/js/ln-editor/ln-editor.scss +0 -43
- package/js/ln-external-links/ln-external-links.js +0 -1
- package/js/ln-fill/ln-fill.js +0 -1
- package/js/ln-filter/README.md +0 -189
- package/js/ln-filter/ln-filter-dev.scss +0 -8
- package/js/ln-filter/ln-filter.js +0 -1
- package/js/ln-filter/src/ln-filter.js +0 -419
- package/js/ln-form/ln-form.js +0 -1
- package/js/ln-http/ln-http.js +0 -1
- package/js/ln-link/ln-link.js +0 -1
- package/js/ln-list/README.md +0 -129
- package/js/ln-list/ln-list.js +0 -1
- package/js/ln-list/ln-list.scss +0 -28
- package/js/ln-modal/ln-modal-dev.scss +0 -13
- package/js/ln-modal/ln-modal.js +0 -1
- package/js/ln-modal/ln-modal.scss +0 -35
- package/js/ln-modal-coordinator/README.md +0 -99
- package/js/ln-modal-coordinator/ln-modal-coordinator-dev.scss +0 -8
- package/js/ln-modal-coordinator/ln-modal-coordinator.js +0 -1
- package/js/ln-nav/ln-nav.js +0 -1
- package/js/ln-number/README.md +0 -149
- package/js/ln-number/ln-number.js +0 -1
- package/js/ln-number/src/ln-number.js +0 -443
- package/js/ln-options/ln-options.js +0 -1
- package/js/ln-popover/ln-popover.js +0 -1
- package/js/ln-progress/ln-progress.js +0 -1
- package/js/ln-progress/src/ln-progress.js +0 -98
- package/js/ln-router/ln-router.js +0 -1
- package/js/ln-search/README.md +0 -158
- package/js/ln-search/ln-search-dev.scss +0 -8
- package/js/ln-search/ln-search.js +0 -1
- package/js/ln-search/src/ln-search.js +0 -117
- package/js/ln-slug/ln-slug.js +0 -1
- package/js/ln-sort/ln-sort.js +0 -1
- package/js/ln-sort/src/ln-sort.js +0 -178
- package/js/ln-sortable/ln-sortable.js +0 -1
- package/js/ln-stat/ln-stat.js +0 -1
- package/js/ln-table/ln-table.js +0 -1
- package/js/ln-table/ln-table.scss +0 -11
- package/js/ln-table-coordinator/README.md +0 -73
- package/js/ln-table-coordinator/ln-table-coordinator.js +0 -1
- package/js/ln-table-coordinator/src/ln-table-coordinator.js +0 -160
- package/js/ln-tabs/ln-tabs-dev.scss +0 -18
- package/js/ln-tabs/ln-tabs.js +0 -1
- package/js/ln-tabs/src/ln-tabs.js +0 -188
- package/js/ln-time/ln-time.js +0 -1
- package/js/ln-toast/ln-toast.js +0 -1
- package/js/ln-toggle/ln-toggle.js +0 -1
- package/js/ln-tooltip/ln-tooltip.js +0 -1
- package/js/ln-tooltip/ln-tooltip.scss +0 -9
- package/js/ln-translations/ln-translations.js +0 -1
- package/js/ln-upload/README.md +0 -255
- package/js/ln-upload/ln-upload.js +0 -1
- package/js/ln-upload/ln-upload.scss +0 -20
- package/js/ln-upload/src/ln-upload.js +0 -423
- package/js/ln-validate/ln-validate.js +0 -1
- package/scss/components/_button.scss +0 -20
- package/scss/components/_confirm.scss +0 -5
- package/scss/components/_form.scss +0 -107
- package/scss/components/_status-badge.scss +0 -4
- package/scss/components/_toast.scss +0 -68
- package/scss/components/_upload.scss +0 -51
- package/scss/config/_theme.scss +0 -216
- package/scss/config/mixins/_btn.scss +0 -179
- package/scss/config/mixins/_confirm.scss +0 -31
- package/scss/config/mixins/_dropdown.scss +0 -141
- package/scss/config/mixins/_popover.scss +0 -64
- package/scss/ln-ashlar-dev.scss +0 -39
- /package/{js → components}/ln-core/positioning.js +0 -0
- /package/{js → components}/ln-core/reactive.js +0 -0
- /package/{js → components}/ln-filter/ln-filter.scss +0 -0
- /package/{js → components}/ln-icon/ln-icon.js +0 -0
- /package/{js → components}/ln-icon/src/ln-icon.js +0 -0
- /package/{js → components}/ln-search/ln-search.scss +0 -0
- /package/{js → components}/ln-toast/template.html +0 -0
- /package/{scss → theme}/components/_accordion.scss +0 -0
- /package/{scss → theme}/components/_ajax.scss +0 -0
- /package/{scss → theme}/components/_alert.scss +0 -0
- /package/{scss → theme}/components/_avatar.scss +0 -0
- /package/{scss → theme}/components/_breadcrumbs.scss +0 -0
- /package/{scss → theme}/components/_card.scss +0 -0
- /package/{scss → theme}/components/_chip.scss +0 -0
- /package/{scss → theme}/components/_circular-progress.scss +0 -0
- /package/{scss → theme}/components/_editor.scss +0 -0
- /package/{scss → theme}/components/_empty-state.scss +0 -0
- /package/{scss → theme}/components/_filter.scss +0 -0
- /package/{scss → theme}/components/_link.scss +0 -0
- /package/{scss → theme}/components/_loader.scss +0 -0
- /package/{scss → theme}/components/_modal.scss +0 -0
- /package/{scss → theme}/components/_nav.scss +0 -0
- /package/{scss → theme}/components/_page-header.scss +0 -0
- /package/{scss → theme}/components/_popover.scss +0 -0
- /package/{scss → theme}/components/_progress.scss +0 -0
- /package/{scss → theme}/components/_prose.scss +0 -0
- /package/{scss → theme}/components/_scrollbar.scss +0 -0
- /package/{scss → theme}/components/_sections.scss +0 -0
- /package/{scss → theme}/components/_sidebar.scss +0 -0
- /package/{scss → theme}/components/_stat-card.scss +0 -0
- /package/{scss → theme}/components/_stepper.scss +0 -0
- /package/{scss → theme}/components/_timeline.scss +0 -0
- /package/{scss → theme}/components/_tooltip.scss +0 -0
- /package/{scss → theme}/components/_translations.scss +0 -0
- /package/{scss → theme}/config/_icons.scss +0 -0
- /package/{scss → theme}/config/_mixins.scss +0 -0
- /package/{scss → theme}/config/mixins/_ajax.scss +0 -0
- /package/{scss → theme}/config/mixins/_avatar.scss +0 -0
- /package/{scss → theme}/config/mixins/_breadcrumbs.scss +0 -0
- /package/{scss → theme}/config/mixins/_breakpoints.scss +0 -0
- /package/{scss → theme}/config/mixins/_chip.scss +0 -0
- /package/{scss → theme}/config/mixins/_circular-progress.scss +0 -0
- /package/{scss → theme}/config/mixins/_display.scss +0 -0
- /package/{scss → theme}/config/mixins/_empty-state.scss +0 -0
- /package/{scss → theme}/config/mixins/_focus.scss +0 -0
- /package/{scss → theme}/config/mixins/_interaction.scss +0 -0
- /package/{scss → theme}/config/mixins/_kbd.scss +0 -0
- /package/{scss → theme}/config/mixins/_link.scss +0 -0
- /package/{scss → theme}/config/mixins/_page-header.scss +0 -0
- /package/{scss → theme}/config/mixins/_position.scss +0 -0
- /package/{scss → theme}/config/mixins/_progress.scss +0 -0
- /package/{scss → theme}/config/mixins/_prose.scss +0 -0
- /package/{scss → theme}/config/mixins/_shadows.scss +0 -0
- /package/{scss → theme}/config/mixins/_sizing.scss +0 -0
- /package/{scss → theme}/config/mixins/_spacing.scss +0 -0
- /package/{scss → theme}/config/mixins/_stat-card.scss +0 -0
- /package/{scss → theme}/config/mixins/_stepper.scss +0 -0
- /package/{scss → theme}/config/mixins/_timeline.scss +0 -0
- /package/{scss → theme}/config/mixins/_transitions.scss +0 -0
- /package/{scss → theme}/config/mixins/_translations.scss +0 -0
- /package/{scss → theme}/tabler-icons.txt +0 -0
package/package.json
CHANGED
|
@@ -1,61 +1,84 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@livenetworks/ashlar",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "LiveNetworks unified frontend library - CSS framework and vanilla JS components",
|
|
5
|
-
"license": "
|
|
6
|
-
"author": "Live Networks",
|
|
7
|
-
"type": "module",
|
|
8
|
-
"publishConfig": {
|
|
9
|
-
"access": "public"
|
|
10
|
-
},
|
|
11
|
-
"repository": {
|
|
12
|
-
"type": "git",
|
|
13
|
-
"url": "git+https://github.com/livenetworks/ln-ashlar.git"
|
|
14
|
-
},
|
|
15
|
-
"homepage": "https://github.com/livenetworks/ln-ashlar#readme",
|
|
16
|
-
"bugs": "https://github.com/livenetworks/ln-ashlar/issues",
|
|
17
|
-
"keywords": [
|
|
18
|
-
"css",
|
|
19
|
-
"scss",
|
|
20
|
-
"design-system",
|
|
21
|
-
"frontend",
|
|
22
|
-
"components",
|
|
23
|
-
"vanilla-js"
|
|
24
|
-
],
|
|
25
|
-
"
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
"
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
"
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
-
"
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
"
|
|
47
|
-
"
|
|
48
|
-
"
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
"
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
"
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
"
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "@livenetworks/ashlar",
|
|
3
|
+
"version": "2.0.0",
|
|
4
|
+
"description": "LiveNetworks unified frontend library - CSS framework and vanilla JS components",
|
|
5
|
+
"license": "GPL-3.0-or-later",
|
|
6
|
+
"author": "Live Networks",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"publishConfig": {
|
|
9
|
+
"access": "public"
|
|
10
|
+
},
|
|
11
|
+
"repository": {
|
|
12
|
+
"type": "git",
|
|
13
|
+
"url": "git+https://github.com/livenetworks/ln-ashlar.git"
|
|
14
|
+
},
|
|
15
|
+
"homepage": "https://github.com/livenetworks/ln-ashlar#readme",
|
|
16
|
+
"bugs": "https://github.com/livenetworks/ln-ashlar/issues",
|
|
17
|
+
"keywords": [
|
|
18
|
+
"css",
|
|
19
|
+
"scss",
|
|
20
|
+
"design-system",
|
|
21
|
+
"frontend",
|
|
22
|
+
"components",
|
|
23
|
+
"vanilla-js"
|
|
24
|
+
],
|
|
25
|
+
"main": "./dist/ln-ashlar.js",
|
|
26
|
+
"style": "./dist/ln-ashlar.css",
|
|
27
|
+
"web-types": "./web-types.json",
|
|
28
|
+
"files": [
|
|
29
|
+
"dist/",
|
|
30
|
+
"theme/",
|
|
31
|
+
"components/",
|
|
32
|
+
"ln-ashlar.html-data.json",
|
|
33
|
+
"web-types.json"
|
|
34
|
+
],
|
|
35
|
+
"exports": {
|
|
36
|
+
".": {
|
|
37
|
+
"import": "./dist/ln-ashlar.js",
|
|
38
|
+
"default": "./dist/ln-ashlar.js"
|
|
39
|
+
},
|
|
40
|
+
"./core.css": "./dist/ln-ashlar-core.css",
|
|
41
|
+
"./theme.css": "./dist/ln-ashlar-theme.css",
|
|
42
|
+
"./full.css": "./dist/ln-ashlar.css",
|
|
43
|
+
"./landing.css": "./dist/ln-ashlar-landing.css",
|
|
44
|
+
"./presentation.css": "./dist/ln-ashlar-landing.css",
|
|
45
|
+
"./dev.css": "./dist/ln-ashlar-dev.css",
|
|
46
|
+
"./dev.js": "./dist/ln-ashlar-dev.js",
|
|
47
|
+
"./theme/*": "./theme/*",
|
|
48
|
+
"./components/*": "./components/*"
|
|
49
|
+
},
|
|
50
|
+
"scripts": {
|
|
51
|
+
"test": "npm run sync:ln-schemas:check && npm run sync:ln-events:check && npm run sync:css-tokens:check && node --test \"tests/*.test.js\"",
|
|
52
|
+
"test:p0": "node --test tests/p0-data-integrity.test.js",
|
|
53
|
+
"dev": "node scripts/build.mjs --watch",
|
|
54
|
+
"build": "npm run sync:ln-schemas && npm run sync:ln-events && npm run sync:css-tokens && node scripts/build.mjs && npm run build:dev-css && npm run build:demos",
|
|
55
|
+
"build:demos": "npm run build:demo-index && npm run build:demo-admin && npm run build:demo-docuflow && npm run build:demo-spa && npm run build:demo-landing && npm run build:demo-corporate",
|
|
56
|
+
"build:dev-css": "sass theme/ln-ashlar-dev.scss demo/dist/ln-ashlar-dev.css --no-source-map --style=compressed",
|
|
57
|
+
"generate:brand-assets": "powershell -ExecutionPolicy Bypass -File scripts/generate-brand-assets.ps1 && node scripts/generate-svg-favicon.mjs",
|
|
58
|
+
"build:demo-index": "sass demo/index.scss demo/index.css --no-source-map --style=compressed",
|
|
59
|
+
"build:demo-admin": "sass demo/admin/src/admin.scss demo/admin/dist/admin.css --no-source-map --style=compressed && node -e \"const fs = require('fs'); fs.copyFileSync('demo/admin/src/demo.js', 'demo/admin/dist/demo.js')\" && node demo/admin/src/build-pages.mjs",
|
|
60
|
+
"build:demo-docuflow": "sass demo/docuflow/docuflow.scss demo/docuflow/dist/docuflow.css --no-source-map --style=compressed",
|
|
61
|
+
"build:demo-spa": "node demo/spa/build.mjs",
|
|
62
|
+
"build:demo-landing": "sass demo/landing/landing.scss demo/landing/landing.css --no-source-map --style=compressed",
|
|
63
|
+
"build:demo-corporate": "sass demo/corporate/corporate.scss demo/corporate/corporate.css --no-source-map --style=compressed",
|
|
64
|
+
"sync:ln-schemas": "node scripts/sync-ln-schemas.mjs",
|
|
65
|
+
"sync:ln-schemas:check": "node scripts/sync-ln-schemas.mjs --check",
|
|
66
|
+
"sync:ln-events": "node scripts/sync-ln-events.mjs",
|
|
67
|
+
"sync:ln-events:check": "node scripts/sync-ln-events.mjs --check",
|
|
68
|
+
"sync:ln-events:strict": "node scripts/sync-ln-events.mjs --strict",
|
|
69
|
+
"sync:css-tokens": "node scripts/sync-css-tokens.mjs",
|
|
70
|
+
"sync:css-tokens:check": "node scripts/sync-css-tokens.mjs --check",
|
|
71
|
+
"manifest": "node scripts/extract-manifest.mjs",
|
|
72
|
+
"manifest:file": "node scripts/extract-manifest.mjs --output=docs/manifest.txt",
|
|
73
|
+
"generate:llms": "node scripts/generate-llms.mjs",
|
|
74
|
+
"generate:llms:check": "node scripts/generate-llms.mjs --check"
|
|
75
|
+
},
|
|
76
|
+
"devDependencies": {
|
|
77
|
+
"@tabler/icons": "^3.41.1",
|
|
78
|
+
"fake-indexeddb": "^6.2.4",
|
|
79
|
+
"flag-icons": "^7.5.0",
|
|
80
|
+
"puppeteer-core": "^25.1.0",
|
|
81
|
+
"sass-embedded": "^1.83.0",
|
|
82
|
+
"vite": "^6.0.0"
|
|
83
|
+
}
|
|
84
|
+
}
|
|
@@ -82,6 +82,7 @@ code {
|
|
|
82
82
|
@include text-sm;
|
|
83
83
|
--color-bg: var(--bg-recessed);
|
|
84
84
|
background-color: var(--color-bg);
|
|
85
|
+
color: var(--color-fg);
|
|
85
86
|
padding: var(--size-2xs) var(--size-xs);
|
|
86
87
|
@include rounded-sm;
|
|
87
88
|
}
|
|
@@ -91,6 +92,7 @@ pre {
|
|
|
91
92
|
@include text-sm;
|
|
92
93
|
--color-bg: var(--bg-recessed);
|
|
93
94
|
background-color: var(--color-bg);
|
|
95
|
+
color: var(--color-fg);
|
|
94
96
|
padding: var(--size-md);
|
|
95
97
|
@include rounded-md;
|
|
96
98
|
@include border;
|
package/theme/brand.css
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ============================================================================
|
|
3
|
+
* ln-ashlar — Brand Configuration Template (brand.css)
|
|
4
|
+
* ============================================================================
|
|
5
|
+
*
|
|
6
|
+
* This file allows client applications to override corporate brand colors
|
|
7
|
+
* and typography in a single place, without modifying or recompiling core
|
|
8
|
+
* library files. Brand is polarity-free by default: one :root declaration
|
|
9
|
+
* serves light and dark alike.
|
|
10
|
+
*
|
|
11
|
+
* HOW TO USE:
|
|
12
|
+
* 1. Copy this file into your project (e.g., as `assets/css/brand.css`).
|
|
13
|
+
* 2. Link this file in your HTML. Thanks to zero-specificity `:where()` selectors
|
|
14
|
+
* in ln-ashlar, your definitions here will ALWAYS win regardless of stylesheet
|
|
15
|
+
* loading order (even if loaded before `ln-ashlar.css`).
|
|
16
|
+
*
|
|
17
|
+
* IMPORTANT RULES:
|
|
18
|
+
* - Bare HSL Triplets: Values for `--brand-primary` and `--brand-secondary` MUST
|
|
19
|
+
* be specified as bare HSL triplets (e.g. `221 83% 48%`), NEVER wrapped in `hsl(...)`.
|
|
20
|
+
* The library internally composes alpha transparency over these values using CSS
|
|
21
|
+
* color slash syntax: `hsl(var(--color-primary) / 0.2)`. Wrapping them in `hsl()`
|
|
22
|
+
* would produce invalid syntax like `hsl(hsl(...) / 0.2)` and drop declarations.
|
|
23
|
+
*
|
|
24
|
+
* - Tint Overrides: By default, `--color-accent-tint` and `--color-accent-tint-strong`
|
|
25
|
+
* are automatically computed via `color-mix()` against local surface backgrounds.
|
|
26
|
+
* If your brand requires custom hand-tuned tint shades, uncomment and set
|
|
27
|
+
* `--brand-primary-tint` and `--brand-primary-tint-strong`.
|
|
28
|
+
*
|
|
29
|
+
* - Additional Overrides: You may also customize font families (`--font-sans`, `--font-mono`)
|
|
30
|
+
* or override any neutral color tokens (`--color-neutral-50` ... `--color-neutral-900`)
|
|
31
|
+
* within the respective theme blocks below.
|
|
32
|
+
* ============================================================================
|
|
33
|
+
*/
|
|
34
|
+
|
|
35
|
+
/* -------------------------------------------------------------------------- */
|
|
36
|
+
/* Light Mode Brand Values */
|
|
37
|
+
/* -------------------------------------------------------------------------- */
|
|
38
|
+
:root {
|
|
39
|
+
/* Primary brand color (bare HSL triplet: hue saturation% lightness%) */
|
|
40
|
+
--brand-primary: 221 83% 43%;
|
|
41
|
+
|
|
42
|
+
/* Secondary brand accent color (bare HSL triplet) */
|
|
43
|
+
--brand-secondary: 160 84% 36%;
|
|
44
|
+
|
|
45
|
+
/* Typography font stacks (optional) */
|
|
46
|
+
--font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
|
47
|
+
--font-mono: 'JetBrains Mono', ui-monospace, 'Cascadia Code', monospace;
|
|
48
|
+
|
|
49
|
+
/* Optional manual accent tint overrides (defaults are computed via color-mix) */
|
|
50
|
+
/* --brand-primary-tint: hsl(221 83% 97%); */
|
|
51
|
+
/* --brand-primary-tint-strong: hsl(221 83% 94%); */
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/* -------------------------------------------------------------------------- */
|
|
55
|
+
/* Dark Mode Brand Values — OPT-IN, commented out by default */
|
|
56
|
+
/* -------------------------------------------------------------------------- */
|
|
57
|
+
/*
|
|
58
|
+
* Uncomment ONLY if your brand genuinely needs a different primary on dark
|
|
59
|
+
* surfaces. Be aware of the cost: a per-polarity brand override re-declares
|
|
60
|
+
* the token on EVERY nested [data-mode="dark"] island, and a declaration beats
|
|
61
|
+
* inheritance at any specificity. So a dark island nested inside a scoped
|
|
62
|
+
* [data-theme] region will clobber that region's brand and snap back to the
|
|
63
|
+
* value below. Declaring brand at :root only — the default above — lets
|
|
64
|
+
* [data-theme] islands rebind it cleanly.
|
|
65
|
+
*
|
|
66
|
+
* [data-mode="dark"] {
|
|
67
|
+
* --brand-primary: 221 83% 48%;
|
|
68
|
+
* --brand-secondary: 160 84% 36%;
|
|
69
|
+
*
|
|
70
|
+
* --brand-primary-tint: hsl(232 50% 15%);
|
|
71
|
+
* --brand-primary-tint-strong: hsl(232 60% 22%);
|
|
72
|
+
* }
|
|
73
|
+
*/
|
|
@@ -13,3 +13,11 @@
|
|
|
13
13
|
.header-right { @include app-header-right; }
|
|
14
14
|
.header-actions { @include app-header-actions; }
|
|
15
15
|
.header-avatar { @include header-avatar; }
|
|
16
|
+
|
|
17
|
+
// Lock root scroll exclusively for administrative shells
|
|
18
|
+
html:has(.app-wrapper),
|
|
19
|
+
body:has(.app-wrapper),
|
|
20
|
+
.app-shell {
|
|
21
|
+
height: 100%;
|
|
22
|
+
overflow: hidden;
|
|
23
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
@use '../config/mixins' as *;
|
|
2
|
+
|
|
3
|
+
// Prototype-tier classes.
|
|
4
|
+
// These classes are provided for prototyping, inspector experimentation,
|
|
5
|
+
// and demo HTML only. In production, apply the corresponding mixin to a
|
|
6
|
+
// semantic selector:
|
|
7
|
+
//
|
|
8
|
+
// #add-user { @include btn; }
|
|
9
|
+
// #users-table ul { @include btn-group; }
|
|
10
|
+
//
|
|
11
|
+
// Prototype-tier and universal button classes.
|
|
12
|
+
// These classes apply to both <button> and <a> (link-buttons) ensuring
|
|
13
|
+
// full button geometry, padding, alignment, and theme variables:
|
|
14
|
+
.btn { @include button-base; @include btn; }
|
|
15
|
+
.btn-soft { @include button-base; @include btn-soft; }
|
|
16
|
+
.btn-ghost { @include button-base; @include btn-ghost; }
|
|
17
|
+
.btn-outline { @include button-base; @include btn-outline; }
|
|
18
|
+
.btn-link { @include button-base; @include btn-link; }
|
|
19
|
+
.btn-sm { @include btn-sm; }
|
|
20
|
+
.btn-lg { @include btn-lg; }
|
|
21
|
+
|
|
22
|
+
.btn-group {
|
|
23
|
+
@include btn-group;
|
|
24
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// Armed state — rebind the accent token so a button carrying @mixin btn turns
|
|
2
|
+
// red while confirming and theme overrides keep applying. See
|
|
3
|
+
// theme/base/_global.scss for this being the documented colour-variant hook.
|
|
4
|
+
[data-ln-confirm-state="confirming"] {
|
|
5
|
+
--color-primary: var(--color-error);
|
|
6
|
+
}
|
|
@@ -1,22 +1,30 @@
|
|
|
1
|
-
@use '../config/mixins' as *;
|
|
2
|
-
|
|
3
|
-
// ─── Date field — ln-date merged input ──────────────────────────
|
|
4
|
-
// Applied to the wrapper <span> that ln-date generates around the
|
|
5
|
-
// visible input, hidden submit input, native picker, and calendar button.
|
|
6
|
-
// Uses the generic form-field-group mixin (bordered flex shell).
|
|
7
|
-
|
|
8
|
-
[data-ln-date-field] {
|
|
9
|
-
@include form-field-group;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
1
|
+
@use '../config/mixins' as *;
|
|
2
|
+
|
|
3
|
+
// ─── Date field — ln-date merged input ──────────────────────────
|
|
4
|
+
// Applied to the wrapper <span> that ln-date generates around the
|
|
5
|
+
// visible input, hidden submit input, native picker, and calendar button.
|
|
6
|
+
// Uses the generic form-field-group mixin (bordered flex shell).
|
|
7
|
+
|
|
8
|
+
[data-ln-date-field] {
|
|
9
|
+
@include form-field-group;
|
|
10
|
+
@include w-full;
|
|
11
|
+
display: flex;
|
|
12
|
+
// The submit value input has no visual role — hide it entirely.
|
|
13
|
+
> input[type="hidden"] {
|
|
14
|
+
display: none;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
// The native date picker stays rendered (position:absolute via inline style)
|
|
18
|
+
// so showPicker() can anchor the calendar popup to this element's position.
|
|
19
|
+
> input[type="date"] {
|
|
20
|
+
position: absolute;
|
|
21
|
+
pointer-events: none;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
time,
|
|
26
|
+
[data-ln-date],
|
|
27
|
+
[data-ln-time] {
|
|
28
|
+
@include font-tabular;
|
|
29
|
+
}
|
|
30
|
+
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
@use '../config/mixins' as *;
|
|
2
|
+
|
|
3
|
+
// ─── Inputs ─────────────────────────────────────────────────────
|
|
4
|
+
|
|
5
|
+
input,
|
|
6
|
+
textarea,
|
|
7
|
+
select {
|
|
8
|
+
@include form-input;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
textarea {
|
|
12
|
+
@include form-textarea;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
select {
|
|
16
|
+
@include form-select;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
output {
|
|
20
|
+
@include form-slot;
|
|
21
|
+
color: var(--fg-muted);
|
|
22
|
+
font-family: var(--font-mono);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// ─── Checkbox & Radio ───────────────────────────────────────────
|
|
26
|
+
|
|
27
|
+
input[type="checkbox"] {
|
|
28
|
+
@include form-checkbox;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
input[type="radio"] {
|
|
32
|
+
@include form-radio;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// ─── Icon input group ───────────────────────────────────────────
|
|
36
|
+
// Semantic trigger: any <label>, <div>, <span> or <search> that directly
|
|
37
|
+
// contains a <svg class="ln-icon"> AND a text-ish <input>. Excludes
|
|
38
|
+
// checkbox/radio/file/button types via the :is() allowlist.
|
|
39
|
+
//
|
|
40
|
+
// Emitted twice, on purpose:
|
|
41
|
+
//
|
|
42
|
+
// shell → :is(label,div,span,search):where(<structural test>) = (0,0,1)
|
|
43
|
+
// The wrapper's chrome is a BASE. The :has() test is a guard, not a
|
|
44
|
+
// claim to weight, so it goes inside :where(). Every consumer binding
|
|
45
|
+
// now outranks it with a plain selector: @mixin search (0,1,2),
|
|
46
|
+
// the sidebar header search (0,2,3), @mixin panel-search (0,2,2), the ln-table
|
|
47
|
+
// toolbar (0,2,3). The wrapper list stays OUTSIDE :where() so the shell
|
|
48
|
+
// is (0,0,1), not (0,0,0) — it must beat the (0,0,0) form-slot rule at
|
|
49
|
+
// the bottom of this file by specificity, not by source order.
|
|
50
|
+
//
|
|
51
|
+
// parts → :is(label,div,span,search):has(…):has(…) = (0,2,2)
|
|
52
|
+
// Child resets and state chrome keep full weight: input:disabled and
|
|
53
|
+
// input:focus-visible are (0,1,1) and both set a background.
|
|
54
|
+
//
|
|
55
|
+
// One selector source — the two emissions cannot drift apart.
|
|
56
|
+
|
|
57
|
+
$icon-group-wrapper: ':is(label, div, span, search)';
|
|
58
|
+
$icon-group-test: ':has(> .ln-icon):has(> :is(input[type="text"], input[type="search"], input[type="email"], input[type="url"], input[type="tel"], input[type="password"], input[type="number"]))';
|
|
59
|
+
|
|
60
|
+
#{$icon-group-wrapper}:where(#{$icon-group-test}) {
|
|
61
|
+
@include form-field-group-shell;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
#{$icon-group-wrapper}#{$icon-group-test} {
|
|
65
|
+
@include form-input-icon-group-parts;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// ─── Label & Actions ────────────────────────────────────────────
|
|
69
|
+
|
|
70
|
+
// Non-wrapping labels only — the label sits above/beside its input, not
|
|
71
|
+
// around it. The icon-group pattern owns its full styling and must not
|
|
72
|
+
// inherit block + margin-bottom from here.
|
|
73
|
+
label:not(:has(> input)) {
|
|
74
|
+
@include form-label;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// ─── Pill groups — radio & checkbox lists ──────────────────────────
|
|
78
|
+
// Clean class-driven segmented controls and switch panels.
|
|
79
|
+
// No <fieldset> tag dependency to prevent layout collisions.
|
|
80
|
+
|
|
81
|
+
.pills {
|
|
82
|
+
@include pills;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.pills-outline {
|
|
86
|
+
@include pills-outline;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
.pills-switch {
|
|
90
|
+
@include pills-switch;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.pills-segmented {
|
|
94
|
+
@include pills-segmented;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
.pill {
|
|
98
|
+
@include pill;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.pill-outline {
|
|
102
|
+
@include pill-outline;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
.pill-switch {
|
|
106
|
+
@include pill-switch;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
// The <search> landmark used as a WIDGET: a search input as a DIRECT child.
|
|
110
|
+
// A <search> REGION wrapping a whole form does not match — its input is
|
|
111
|
+
// nested, not a direct child. Mirrors the binding shape already used by
|
|
112
|
+
// components/_ln-table.scss for the toolbar search.
|
|
113
|
+
search:has(> input[type="search"]) {
|
|
114
|
+
@include search;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
.form-actions {
|
|
118
|
+
@include form-actions;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// ─── Validation states ─────────────────────────────────────────
|
|
122
|
+
|
|
123
|
+
.ln-validate-invalid {
|
|
124
|
+
@include form-validate-invalid;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
.ln-validate-valid {
|
|
128
|
+
@include form-validate-valid;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
[data-ln-validate-errors] {
|
|
132
|
+
@include form-validate-errors;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
// Any trailing feedback/metadata element inside .form-element automatically gets slot treatment with zero-specificity base styling
|
|
136
|
+
:where(.form-element > :is(input, select, textarea, [data-ln-date-field], search, [class*="group"]) ~ :not(input)) {
|
|
137
|
+
@include form-slot;
|
|
138
|
+
color: var(--fg-muted);
|
|
139
|
+
}
|
|
140
|
+
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
@include ln-table-toolbar;
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
.ln-table__toolbar label:has(> input[type="search"]) {
|
|
16
|
+
.ln-table__toolbar :is(label, search):has(> input[type="search"]) {
|
|
17
17
|
@include ln-table-toolbar-search;
|
|
18
18
|
}
|
|
19
19
|
|
|
@@ -61,9 +61,4 @@
|
|
|
61
61
|
@include ln-table-placeholder-row;
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
-
.ln-table--loading tbody {
|
|
65
|
-
opacity: 0.5;
|
|
66
|
-
pointer-events: none;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
64
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
@use '../config/mixins' as *;
|
|
2
|
-
|
|
3
|
-
[data-ln-sort] { @include sort; }
|
|
4
|
-
|
|
5
|
-
th:hover [data-ln-sort] { opacity: 0.7; }
|
|
6
|
-
|
|
7
|
-
[data-ln-sort][data-ln-sort-state="asc"],
|
|
8
|
-
[data-ln-sort][data-ln-sort-state="desc"] {
|
|
9
|
-
@include sort-active;
|
|
10
|
-
}
|
|
1
|
+
@use '../config/mixins' as *;
|
|
2
|
+
|
|
3
|
+
[data-ln-sort] { @include sort; }
|
|
4
|
+
|
|
5
|
+
th:hover [data-ln-sort] { opacity: 0.7; }
|
|
6
|
+
|
|
7
|
+
[data-ln-sort][data-ln-sort-state="asc"],
|
|
8
|
+
[data-ln-sort][data-ln-sort-state="desc"] {
|
|
9
|
+
@include sort-active;
|
|
10
|
+
}
|
|
@@ -6,6 +6,22 @@ table {
|
|
|
6
6
|
tr.section-header td {
|
|
7
7
|
@include table-section-header;
|
|
8
8
|
}
|
|
9
|
+
|
|
10
|
+
td.numeric,
|
|
11
|
+
td.num,
|
|
12
|
+
td:has(time),
|
|
13
|
+
td:has([data-ln-number]) {
|
|
14
|
+
@include font-tabular;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
input[type="checkbox"] {
|
|
18
|
+
accent-color: var(--color-accent);
|
|
19
|
+
cursor: pointer;
|
|
20
|
+
width: 1rem;
|
|
21
|
+
height: 1rem;
|
|
22
|
+
border-radius: var(--radius-xs, 3px);
|
|
23
|
+
vertical-align: middle;
|
|
24
|
+
}
|
|
9
25
|
}
|
|
10
26
|
|
|
11
27
|
.table-container {
|