@livenetworks/ashlar 1.6.1 → 2.0.1
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 +190 -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
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
@use 'display' as *;
|
|
2
|
+
@use 'spacing' as *;
|
|
3
|
+
@use 'sizing' as *;
|
|
4
|
+
@use 'colors' as *;
|
|
5
|
+
@use 'borders' as *;
|
|
6
|
+
@use 'typography' as *;
|
|
7
|
+
@use 'position' as *;
|
|
8
|
+
@use 'interaction' as *;
|
|
9
|
+
@use 'motion' as *;
|
|
10
|
+
@use 'card' as *;
|
|
11
|
+
|
|
12
|
+
// Dropdown menu — floating panel with menu items.
|
|
13
|
+
//
|
|
14
|
+
// Usage:
|
|
15
|
+
// [data-ln-dropdown] { @include dropdown; }
|
|
16
|
+
// [data-ln-dropdown-menu] { @include dropdown-menu; }
|
|
17
|
+
//
|
|
18
|
+
// Open/close state (display:none ↔ display:block + .open) is JS-driven
|
|
19
|
+
// and lives in the co-located JS SCSS, not here.
|
|
20
|
+
|
|
21
|
+
@mixin dropdown {
|
|
22
|
+
@include relative;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// ─── Menu items — shared recipe ────────────────────────
|
|
26
|
+
// Compact interactive list recipe for floating overlays (dropdown, popover, pickers).
|
|
27
|
+
|
|
28
|
+
@mixin menu-items {
|
|
29
|
+
list-style: none;
|
|
30
|
+
margin: 0;
|
|
31
|
+
padding: 0;
|
|
32
|
+
|
|
33
|
+
:is(ul, ol) {
|
|
34
|
+
list-style: none;
|
|
35
|
+
margin: 0;
|
|
36
|
+
padding: 0;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
li {
|
|
40
|
+
margin: 0;
|
|
41
|
+
padding: 0;
|
|
42
|
+
list-style: none;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
li + li {
|
|
46
|
+
margin-top: var(--size-2xs);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
form {
|
|
50
|
+
margin: 0;
|
|
51
|
+
padding: 0;
|
|
52
|
+
display: contents;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
:is(li, form) > :is(a, button, input[type="submit"], input[type="reset"], input[type="button"]) {
|
|
56
|
+
width: 100%;
|
|
57
|
+
box-sizing: border-box;
|
|
58
|
+
display: flex;
|
|
59
|
+
align-items: center;
|
|
60
|
+
justify-content: flex-start;
|
|
61
|
+
gap: var(--gap);
|
|
62
|
+
padding: var(--padding-y) var(--padding-x);
|
|
63
|
+
border-radius: var(--radius);
|
|
64
|
+
background: transparent;
|
|
65
|
+
border: none;
|
|
66
|
+
outline: none;
|
|
67
|
+
box-shadow: none;
|
|
68
|
+
text-align: left;
|
|
69
|
+
text-decoration: none;
|
|
70
|
+
cursor: pointer;
|
|
71
|
+
font-family: inherit;
|
|
72
|
+
@include typography(body-sm);
|
|
73
|
+
color: var(--color-fg);
|
|
74
|
+
transition: background-color 120ms ease, color 120ms ease;
|
|
75
|
+
|
|
76
|
+
&:hover:not(:disabled) {
|
|
77
|
+
background-color: color-mix(in srgb, var(--color-accent) var(--tint-hover), transparent);
|
|
78
|
+
color: var(--color-fg);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
&:active:not(:disabled) {
|
|
82
|
+
background-color: color-mix(in srgb, var(--color-accent) var(--tint-active), transparent);
|
|
83
|
+
color: var(--color-fg);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// Single-select active state (theme/language pickers)
|
|
87
|
+
&[aria-current="true"],
|
|
88
|
+
&.active {
|
|
89
|
+
background-color: color-mix(in srgb, var(--color-accent) var(--tint-selected), transparent);
|
|
90
|
+
color: var(--color-accent);
|
|
91
|
+
font-weight: var(--font-medium);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
hr {
|
|
96
|
+
border: none;
|
|
97
|
+
border-top: var(--border-width) solid var(--color-border);
|
|
98
|
+
margin: var(--size-xs) 0;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// ─── Panel search — search field inside a floating panel ───────
|
|
103
|
+
// Shared by @mixin dropdown-menu and @mixin popover (which already @use's
|
|
104
|
+
// this file for menu-items). The <search> icon-group base makes the widget
|
|
105
|
+
// inline-flex and shrink-to-fit; in a block panel that leaves a baseline
|
|
106
|
+
// descender gap under the field and lets it under-fill the panel.
|
|
107
|
+
//
|
|
108
|
+
// :has(> input[type="search"]) is structural, not decorative — <search> is
|
|
109
|
+
// a REGION per spec, so a <search> wrapping a whole form must not match. It
|
|
110
|
+
// also carries the weight this rule needs: under a [data-*] panel the
|
|
111
|
+
// selector is (0,2,2) and outranks `search:has(> input[type="search"])`
|
|
112
|
+
// (0,1,2), whose `width: min(100%, 20rem)` would otherwise cap the field.
|
|
113
|
+
//
|
|
114
|
+
// box-sizing is not restated — base/_reset.scss sets border-box on *.
|
|
115
|
+
|
|
116
|
+
@mixin panel-search {
|
|
117
|
+
> search:has(> input[type="search"]) {
|
|
118
|
+
@include flex; // block-level — kills the inline-flex baseline gap
|
|
119
|
+
@include w-full;
|
|
120
|
+
margin-bottom: var(--size-xs);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// Bare input shape (no <search> wrapper) — form-input already gives w-full.
|
|
124
|
+
> input[type="search"] {
|
|
125
|
+
margin-bottom: var(--size-xs);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
// Divider when the search precedes the option list. The margin-top here
|
|
129
|
+
// collapses with the margin-bottom above (both block-level, same BFC),
|
|
130
|
+
// so the border sits in a symmetric size-xs gap — not a doubled one.
|
|
131
|
+
> :is(search:has(> input[type="search"]), input[type="search"]) + :is(ul, nav) {
|
|
132
|
+
border-top: var(--border-width) solid var(--color-border);
|
|
133
|
+
padding-top: var(--size-xs);
|
|
134
|
+
margin-top: var(--size-xs);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
// ─── Dropdown menu — floating panel + menu items ───────
|
|
139
|
+
@mixin dropdown-menu {
|
|
140
|
+
@include floating-panel;
|
|
141
|
+
@include fixed;
|
|
142
|
+
inset: auto;
|
|
143
|
+
margin: 0;
|
|
144
|
+
padding: var(--padding-y);
|
|
145
|
+
min-width: var(--dropdown-min-width, 14rem);
|
|
146
|
+
@include enter-scale-fade;
|
|
147
|
+
|
|
148
|
+
@include panel-search;
|
|
149
|
+
|
|
150
|
+
ul[data-ln-search] {
|
|
151
|
+
max-height: 15rem;
|
|
152
|
+
overflow-y: auto;
|
|
153
|
+
scrollbar-width: thin;
|
|
154
|
+
scrollbar-color: var(--border-subtle) transparent;
|
|
155
|
+
|
|
156
|
+
&::-webkit-scrollbar {
|
|
157
|
+
width: 4px;
|
|
158
|
+
}
|
|
159
|
+
&::-webkit-scrollbar-track {
|
|
160
|
+
background: transparent;
|
|
161
|
+
}
|
|
162
|
+
&::-webkit-scrollbar-thumb {
|
|
163
|
+
background-color: var(--border-subtle);
|
|
164
|
+
border-radius: var(--radius-sm);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
@include menu-items;
|
|
169
|
+
}
|
|
@@ -96,13 +96,6 @@
|
|
|
96
96
|
outline: none;
|
|
97
97
|
cursor: text;
|
|
98
98
|
|
|
99
|
-
// Counter the global reset (`ul li, ol li { list-style: none }`).
|
|
100
|
-
// The reset kills markers on <li> directly; prose only sets
|
|
101
|
-
// list-style on the <ul>/<ol> container. Restore inheritance
|
|
102
|
-
// so the container's disc/decimal flows through to each item.
|
|
103
|
-
ul li { list-style: disc; }
|
|
104
|
-
ol li { list-style: decimal; }
|
|
105
|
-
|
|
106
99
|
// Empty placeholder via CSS
|
|
107
100
|
&:empty::before {
|
|
108
101
|
content: attr(data-placeholder);
|
|
@@ -1,47 +1,47 @@
|
|
|
1
|
-
@use 'spacing' as *;
|
|
2
|
-
@use 'display' as *;
|
|
3
|
-
@use 'interaction' as *;
|
|
4
|
-
@use 'transitions' as *;
|
|
5
|
-
@use 'form' as *;
|
|
6
|
-
|
|
7
|
-
// ─── Filter dropdown — content chrome only ─────────────────────────
|
|
8
|
-
// The floating shell (chrome, fixed positioning, min-width, show/hide)
|
|
9
|
-
// comes from `@mixin popover` on the popover-driven path, OR from
|
|
10
|
-
// `@mixin floating-panel` + scroll box on the ln-data-table dynamic
|
|
11
|
-
// path (see components/_filter.scss). This mixin styles ONLY the inner
|
|
12
|
-
// content: scrollable options box, search input, and the options list
|
|
13
|
-
// (pills via check-list).
|
|
14
|
-
//
|
|
15
|
-
// NOTE: there is intentionally NO clear-button block. The redundant
|
|
16
|
-
// "Clear Filter" button was removed library-wide — the `data-ln-filter-reset`
|
|
17
|
-
// "All" sentinel checkbox already performs the reset. Do not re-introduce a
|
|
18
|
-
// `[data-ln-filter-clear]` selector here.
|
|
19
|
-
//
|
|
20
|
-
// Tunables (consumer-overridable via --var with sane defaults):
|
|
21
|
-
// --filter-dropdown-max-height (default 20rem)
|
|
22
|
-
// --filter-dropdown-overflow-y (default auto)
|
|
23
|
-
// --filter-dropdown-item-pad-y (default var(--size-3xs))
|
|
24
|
-
//
|
|
25
|
-
// Usage:
|
|
26
|
-
// .column-filter-dropdown { @include filter-dropdown; }
|
|
27
|
-
|
|
28
|
-
@mixin filter-dropdown {
|
|
29
|
-
max-height: var(--filter-dropdown-max-height, 20rem);
|
|
30
|
-
overflow-y: var(--filter-dropdown-overflow-y, auto);
|
|
31
|
-
text-transform: none; // reset inherited header uppercase
|
|
32
|
-
|
|
33
|
-
[data-ln-filter-search] {
|
|
34
|
-
@include form-input;
|
|
35
|
-
font-size: var(--filter-dropdown-text, var(--text-xs));
|
|
36
|
-
--padding-y: var(--size-2xs);
|
|
37
|
-
--padding-x: var(--size-sm);
|
|
38
|
-
width: 100%;
|
|
39
|
-
margin-bottom: var(--size-xs);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
[data-ln-filter-options] {
|
|
43
|
-
@include check-list-nav;
|
|
44
|
-
|
|
45
|
-
li { padding: var(--filter-dropdown-item-pad-y, var(--size-3xs)) 0; }
|
|
46
|
-
}
|
|
47
|
-
}
|
|
1
|
+
@use 'spacing' as *;
|
|
2
|
+
@use 'display' as *;
|
|
3
|
+
@use 'interaction' as *;
|
|
4
|
+
@use 'transitions' as *;
|
|
5
|
+
@use 'form' as *;
|
|
6
|
+
|
|
7
|
+
// ─── Filter dropdown — content chrome only ─────────────────────────
|
|
8
|
+
// The floating shell (chrome, fixed positioning, min-width, show/hide)
|
|
9
|
+
// comes from `@mixin popover` on the popover-driven path, OR from
|
|
10
|
+
// `@mixin floating-panel` + scroll box on the ln-data-table dynamic
|
|
11
|
+
// path (see components/_filter.scss). This mixin styles ONLY the inner
|
|
12
|
+
// content: scrollable options box, search input, and the options list
|
|
13
|
+
// (pills via check-list).
|
|
14
|
+
//
|
|
15
|
+
// NOTE: there is intentionally NO clear-button block. The redundant
|
|
16
|
+
// "Clear Filter" button was removed library-wide — the `data-ln-filter-reset`
|
|
17
|
+
// "All" sentinel checkbox already performs the reset. Do not re-introduce a
|
|
18
|
+
// `[data-ln-filter-clear]` selector here.
|
|
19
|
+
//
|
|
20
|
+
// Tunables (consumer-overridable via --var with sane defaults):
|
|
21
|
+
// --filter-dropdown-max-height (default 20rem)
|
|
22
|
+
// --filter-dropdown-overflow-y (default auto)
|
|
23
|
+
// --filter-dropdown-item-pad-y (default var(--size-3xs))
|
|
24
|
+
//
|
|
25
|
+
// Usage:
|
|
26
|
+
// .column-filter-dropdown { @include filter-dropdown; }
|
|
27
|
+
|
|
28
|
+
@mixin filter-dropdown {
|
|
29
|
+
max-height: var(--filter-dropdown-max-height, 20rem);
|
|
30
|
+
overflow-y: var(--filter-dropdown-overflow-y, auto);
|
|
31
|
+
text-transform: none; // reset inherited header uppercase
|
|
32
|
+
|
|
33
|
+
[data-ln-filter-search] {
|
|
34
|
+
@include form-input;
|
|
35
|
+
font-size: var(--filter-dropdown-text, var(--text-xs));
|
|
36
|
+
--padding-y: var(--size-2xs);
|
|
37
|
+
--padding-x: var(--size-sm);
|
|
38
|
+
width: 100%;
|
|
39
|
+
margin-bottom: var(--size-xs);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
[data-ln-filter-options] {
|
|
43
|
+
@include check-list-nav;
|
|
44
|
+
|
|
45
|
+
li { padding: var(--filter-dropdown-item-pad-y, var(--size-3xs)) 0; }
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -18,10 +18,10 @@
|
|
|
18
18
|
@mixin form-label {
|
|
19
19
|
@include block;
|
|
20
20
|
@include typography(label-sm);
|
|
21
|
-
@include font-
|
|
21
|
+
@include font-medium;
|
|
22
22
|
color: var(--color-fg);
|
|
23
23
|
// Structural label-to-input gap (not shell rhythm).
|
|
24
|
-
--margin-block:
|
|
24
|
+
--margin-block: 0.375rem;
|
|
25
25
|
margin-bottom: var(--margin-block);
|
|
26
26
|
|
|
27
27
|
// Required indicator — red * after label text.
|
|
@@ -96,8 +96,10 @@
|
|
|
96
96
|
font-size: var(--font-size);
|
|
97
97
|
line-height: var(--line-height);
|
|
98
98
|
color: var(--color-fg);
|
|
99
|
-
--color-bg: var(--
|
|
99
|
+
--color-bg: var(--bg-sunken);
|
|
100
100
|
background: var(--color-bg);
|
|
101
|
+
// Control boundary, not a divider — 1.4.11 wants 3:1 here.
|
|
102
|
+
--color-border: var(--border-ui);
|
|
101
103
|
@include border;
|
|
102
104
|
border-radius: var(--radius);
|
|
103
105
|
@include transition;
|
|
@@ -162,10 +164,12 @@
|
|
|
162
164
|
// shell via :focus-within; children suppress their own focus ring.
|
|
163
165
|
//
|
|
164
166
|
// Applied via semantic selectors (no class on the wrapper):
|
|
165
|
-
// - components/_form.scss → label:has(.ln-icon):has(text input)
|
|
167
|
+
// - components/_form.scss → :is(label, div, span, search):has(.ln-icon):has(text input)
|
|
166
168
|
// - components/_date.scss → [data-ln-date-field]
|
|
167
169
|
|
|
168
|
-
|
|
170
|
+
// Split shell/parts so the binding can emit the wrapper's own chrome at base
|
|
171
|
+
// weight while the child resets and state chrome keep full weight.
|
|
172
|
+
@mixin form-field-group-shell {
|
|
169
173
|
@include form-input; // visual shell: border, bg, radius, transition, outline
|
|
170
174
|
@include inline-flex; // override form-input's block display
|
|
171
175
|
@include items-center;
|
|
@@ -174,7 +178,9 @@
|
|
|
174
178
|
width: auto; // cancel form-input's w-full
|
|
175
179
|
padding: 0; // shell owns NO padding; children manage their own
|
|
176
180
|
margin-bottom: 0; // defensive: wrapping <label> carries form-label margin
|
|
181
|
+
}
|
|
177
182
|
|
|
183
|
+
@mixin form-field-group-parts {
|
|
178
184
|
&:focus-within {
|
|
179
185
|
@include _form-focus-style;
|
|
180
186
|
|
|
@@ -255,13 +261,18 @@
|
|
|
255
261
|
}
|
|
256
262
|
}
|
|
257
263
|
|
|
264
|
+
@mixin form-field-group {
|
|
265
|
+
@include form-field-group-shell;
|
|
266
|
+
@include form-field-group-parts;
|
|
267
|
+
}
|
|
268
|
+
|
|
258
269
|
// ─── Icon input group — search/icon field (thin wrapper) ──────────
|
|
259
270
|
//
|
|
260
271
|
// form-field-group + the search-clear control, which is the only piece
|
|
261
272
|
// unique to this binding.
|
|
262
273
|
|
|
263
|
-
@mixin form-input-icon-group {
|
|
264
|
-
@include form-field-group;
|
|
274
|
+
@mixin form-input-icon-group-parts {
|
|
275
|
+
@include form-field-group-parts;
|
|
265
276
|
|
|
266
277
|
// Visually hide the clear button while the field is empty (visibility:hidden
|
|
267
278
|
// preserves layout space so the input width stays stable).
|
|
@@ -320,16 +331,22 @@
|
|
|
320
331
|
}
|
|
321
332
|
}
|
|
322
333
|
|
|
334
|
+
@mixin form-input-icon-group {
|
|
335
|
+
@include form-field-group-shell;
|
|
336
|
+
@include form-input-icon-group-parts;
|
|
337
|
+
}
|
|
338
|
+
|
|
323
339
|
// ─── Search field — compact icon-group variant (delta-only) ───────
|
|
324
340
|
//
|
|
325
341
|
// Opt-in refinements layered on top of the icon-group chrome that the
|
|
326
|
-
// global auto-bind (components/_form.scss:
|
|
327
|
-
// search/text input)) already supplies. PREREQUISITE: the
|
|
328
|
-
// icon + search-input <label> so the auto-bind
|
|
329
|
-
// on a plain
|
|
342
|
+
// global auto-bind (components/_form.scss: :is(label, div, span, search):has(>
|
|
343
|
+
// .ln-icon):has(> search/text input)) already supplies. PREREQUISITE: the
|
|
344
|
+
// consumer is an icon + search-input <search> (or <label>) so the auto-bind
|
|
345
|
+
// provides the base shell; on a plain wrapper this emits only the tweaks
|
|
346
|
+
// below, no chrome.
|
|
330
347
|
//
|
|
331
348
|
// Usage (project/demo SCSS):
|
|
332
|
-
//
|
|
349
|
+
// search:has(> input[type="search"]) { @include search; }
|
|
333
350
|
|
|
334
351
|
@mixin search {
|
|
335
352
|
width: min(100%, 20rem); // intrinsic capped field width
|
|
@@ -360,7 +377,7 @@
|
|
|
360
377
|
padding: 0;
|
|
361
378
|
@include flex-shrink-0;
|
|
362
379
|
// Non-standard 1.5px stroke — optical weight at small checkbox size.
|
|
363
|
-
border: 1.5px solid var(--
|
|
380
|
+
border: 1.5px solid var(--border-ui);
|
|
364
381
|
background: var(--color-bg);
|
|
365
382
|
@include cursor-pointer;
|
|
366
383
|
@include transition;
|
|
@@ -370,8 +387,11 @@
|
|
|
370
387
|
background-color: var(--color-accent);
|
|
371
388
|
border-color: var(--color-accent);
|
|
372
389
|
// Inline SVG: native <input type="checkbox"> cannot contain child elements,
|
|
373
|
-
// so a data URI is the only way to embed a checkmark here.
|
|
374
|
-
|
|
390
|
+
// so a data URI is the only way to embed a checkmark here. The stroke is
|
|
391
|
+
// baked in — data URIs can't read custom properties — so the mark ships as
|
|
392
|
+
// two variants and themes point --check-mark at the one matching their
|
|
393
|
+
// --color-accent-fg pole. Same pattern as --select-arrow above.
|
|
394
|
+
background-image: var(--check-mark);
|
|
375
395
|
background-size: 0.75rem;
|
|
376
396
|
background-position: center;
|
|
377
397
|
background-repeat: no-repeat;
|
|
@@ -775,7 +795,7 @@
|
|
|
775
795
|
|
|
776
796
|
// Hover (unchecked) — subtle accent wash (nav hover).
|
|
777
797
|
&:hover:not(:has(> input:checked)) {
|
|
778
|
-
background-color: color-mix(in srgb, var(--color-accent)
|
|
798
|
+
background-color: color-mix(in srgb, var(--color-accent) var(--tint-hover), transparent);
|
|
779
799
|
}
|
|
780
800
|
|
|
781
801
|
// Selected — nav active vocabulary (replaces solid-accent + white).
|
|
@@ -814,16 +834,27 @@
|
|
|
814
834
|
}
|
|
815
835
|
}
|
|
816
836
|
|
|
837
|
+
// ─── Field feedback slot (Reserved space for errors, output & hints) ──
|
|
838
|
+
|
|
839
|
+
@mixin form-slot {
|
|
840
|
+
@include block;
|
|
841
|
+
min-height: 1.25rem; // Reserves space to prevent form layout shifts
|
|
842
|
+
font-size: var(--text-xs);
|
|
843
|
+
line-height: 1.25rem;
|
|
844
|
+
--margin-block: var(--size-2xs);
|
|
845
|
+
margin-top: var(--margin-block);
|
|
846
|
+
margin-bottom: 0;
|
|
847
|
+
}
|
|
848
|
+
|
|
817
849
|
@mixin form-validate-errors {
|
|
850
|
+
@include form-slot;
|
|
818
851
|
// Structural error-list margin (not shell rhythm).
|
|
819
852
|
--margin-block: var(--size-xs);
|
|
820
853
|
margin-top: var(--margin-block);
|
|
821
854
|
@include typography(caption);
|
|
822
855
|
color: hsl(var(--color-error));
|
|
823
|
-
min-height: 1.25rem; // Reserves space to prevent form layout shifts when errors appear
|
|
824
856
|
list-style: none;
|
|
825
857
|
padding: 0;
|
|
826
|
-
margin-bottom: 0;
|
|
827
858
|
|
|
828
859
|
li {
|
|
829
860
|
margin: 0;
|
|
@@ -1,61 +1,62 @@
|
|
|
1
|
-
// Mixins index — @forward all in correct order
|
|
2
|
-
// Primitives first, composites after (they depend on primitives)
|
|
3
|
-
|
|
4
|
-
// Primitives
|
|
5
|
-
@forward 'spacing';
|
|
6
|
-
@forward 'breakpoints';
|
|
7
|
-
@forward 'display';
|
|
8
|
-
@forward 'sizing';
|
|
9
|
-
@forward 'typography';
|
|
10
|
-
@forward 'colors';
|
|
11
|
-
@forward 'borders';
|
|
12
|
-
@forward 'shadows';
|
|
13
|
-
@forward 'transitions';
|
|
14
|
-
@forward 'motion';
|
|
15
|
-
@forward 'position';
|
|
16
|
-
@forward 'interaction';
|
|
17
|
-
@forward 'focus';
|
|
18
|
-
|
|
19
|
-
// Composites (depend on primitives)
|
|
20
|
-
@forward 'layout';
|
|
21
|
-
@forward 'collapsible';
|
|
22
|
-
@forward 'accordion';
|
|
23
|
-
@forward 'card';
|
|
24
|
-
@forward 'chip';
|
|
25
|
-
@forward 'nav';
|
|
26
|
-
@forward 'btn';
|
|
27
|
-
@forward 'form';
|
|
28
|
-
@forward 'filter';
|
|
29
|
-
@forward 'modal';
|
|
30
|
-
@forward 'breadcrumbs';
|
|
31
|
-
@forward 'loader';
|
|
32
|
-
@forward 'tabs';
|
|
33
|
-
@forward 'table';
|
|
34
|
-
@forward 'sort';
|
|
35
|
-
@forward 'avatar';
|
|
36
|
-
@forward 'footer';
|
|
37
|
-
@forward 'sidebar';
|
|
38
|
-
@forward 'app-shell';
|
|
39
|
-
@forward 'status-badge';
|
|
40
|
-
@forward 'alert';
|
|
41
|
-
@forward 'empty-state';
|
|
42
|
-
@forward 'page-header';
|
|
43
|
-
@forward 'stepper';
|
|
44
|
-
@forward 'timeline';
|
|
45
|
-
@forward 'stat-card';
|
|
46
|
-
@forward 'prose';
|
|
47
|
-
@forward 'editor';
|
|
48
|
-
@forward 'kbd';
|
|
49
|
-
@forward 'tooltip';
|
|
50
|
-
@forward 'popover';
|
|
51
|
-
@forward 'progress';
|
|
52
|
-
@forward 'link';
|
|
53
|
-
@forward '
|
|
54
|
-
@forward '
|
|
55
|
-
@forward '
|
|
56
|
-
@forward '
|
|
57
|
-
@forward '
|
|
58
|
-
@forward 'translations';
|
|
59
|
-
@forward 'ln-table';
|
|
60
|
-
@forward '
|
|
61
|
-
@forward '
|
|
1
|
+
// Mixins index — @forward all in correct order
|
|
2
|
+
// Primitives first, composites after (they depend on primitives)
|
|
3
|
+
|
|
4
|
+
// Primitives
|
|
5
|
+
@forward 'spacing';
|
|
6
|
+
@forward 'breakpoints';
|
|
7
|
+
@forward 'display';
|
|
8
|
+
@forward 'sizing';
|
|
9
|
+
@forward 'typography';
|
|
10
|
+
@forward 'colors';
|
|
11
|
+
@forward 'borders';
|
|
12
|
+
@forward 'shadows';
|
|
13
|
+
@forward 'transitions';
|
|
14
|
+
@forward 'motion';
|
|
15
|
+
@forward 'position';
|
|
16
|
+
@forward 'interaction';
|
|
17
|
+
@forward 'focus';
|
|
18
|
+
|
|
19
|
+
// Composites (depend on primitives)
|
|
20
|
+
@forward 'layout';
|
|
21
|
+
@forward 'collapsible';
|
|
22
|
+
@forward 'accordion';
|
|
23
|
+
@forward 'card';
|
|
24
|
+
@forward 'chip';
|
|
25
|
+
@forward 'nav';
|
|
26
|
+
@forward 'btn';
|
|
27
|
+
@forward 'form';
|
|
28
|
+
@forward 'filter';
|
|
29
|
+
@forward 'modal';
|
|
30
|
+
@forward 'breadcrumbs';
|
|
31
|
+
@forward 'loader';
|
|
32
|
+
@forward 'tabs';
|
|
33
|
+
@forward 'table';
|
|
34
|
+
@forward 'sort';
|
|
35
|
+
@forward 'avatar';
|
|
36
|
+
@forward 'footer';
|
|
37
|
+
@forward 'sidebar';
|
|
38
|
+
@forward 'app-shell';
|
|
39
|
+
@forward 'status-badge';
|
|
40
|
+
@forward 'alert';
|
|
41
|
+
@forward 'empty-state';
|
|
42
|
+
@forward 'page-header';
|
|
43
|
+
@forward 'stepper';
|
|
44
|
+
@forward 'timeline';
|
|
45
|
+
@forward 'stat-card';
|
|
46
|
+
@forward 'prose';
|
|
47
|
+
@forward 'editor';
|
|
48
|
+
@forward 'kbd';
|
|
49
|
+
@forward 'tooltip';
|
|
50
|
+
@forward 'popover';
|
|
51
|
+
@forward 'progress';
|
|
52
|
+
@forward 'link';
|
|
53
|
+
@forward 'circular-progress';
|
|
54
|
+
@forward 'dropdown';
|
|
55
|
+
@forward 'toast';
|
|
56
|
+
@forward 'upload';
|
|
57
|
+
@forward 'picklist';
|
|
58
|
+
@forward 'translations';
|
|
59
|
+
@forward 'ln-table';
|
|
60
|
+
@forward 'chart';
|
|
61
|
+
@forward 'ajax';
|
|
62
|
+
@forward 'diagnostics';
|
|
@@ -73,7 +73,7 @@
|
|
|
73
73
|
// Breakpoints: 480px, 580px, 880px, 1120px
|
|
74
74
|
@mixin container($name: null) {
|
|
75
75
|
// Nameless form is intentional — models native anonymous @container queries.
|
|
76
|
-
// See docs/css/layout.md ("Anonymous container") and demo/admin/mixins.html.
|
|
76
|
+
// See docs-mcp/css/layout.md ("Anonymous container") and demo/admin/mixins.html.
|
|
77
77
|
container-type: inline-size;
|
|
78
78
|
@if $name { container-name: $name; }
|
|
79
79
|
}
|
|
@@ -92,7 +92,11 @@
|
|
|
92
92
|
//
|
|
93
93
|
// Cascade note: the --radius / --shadow re-binds cascade
|
|
94
94
|
// into grandchildren. If a consumer nests a rounded card inside a
|
|
95
|
-
// flat-stack panel, re-bind --radius on that nested element.
|
|
95
|
+
// flat-stack panel, re-bind --radius on that nested element. Exception: a
|
|
96
|
+
// grandchild carrying [data-mode] / [data-theme] / [data-skin] matches the
|
|
97
|
+
// four-axis base-defaults block in _palette.scss, which re-derives --radius
|
|
98
|
+
// and --shadow on it directly — no flat-stack rule reaches a grandchild to
|
|
99
|
+
// contest that, so it silently gets root radius/shadow back.
|
|
96
100
|
//
|
|
97
101
|
// Block-axis only. For horizontal joined controls use btn-group or
|
|
98
102
|
// pill-group — they use border-radius tricks on first/last children
|
|
@@ -85,7 +85,16 @@
|
|
|
85
85
|
position: sticky;
|
|
86
86
|
top: 0;
|
|
87
87
|
z-index: var(--z-sticky);
|
|
88
|
-
border-radius:
|
|
88
|
+
border-radius: 0;
|
|
89
|
+
background: var(--color-bg);
|
|
90
|
+
border-bottom: var(--border-width) solid var(--border-subtle);
|
|
91
|
+
|
|
92
|
+
h3 {
|
|
93
|
+
margin: 0;
|
|
94
|
+
font-size: 1rem;
|
|
95
|
+
font-weight: 600;
|
|
96
|
+
color: var(--color-fg);
|
|
97
|
+
}
|
|
89
98
|
}
|
|
90
99
|
|
|
91
100
|
// ─── In-thead toolbar (first thead row, single colspan th) ───────
|
|
@@ -117,12 +126,22 @@
|
|
|
117
126
|
@include panel-header;
|
|
118
127
|
justify-content: flex-start;
|
|
119
128
|
gap: var(--size-md);
|
|
129
|
+
border-radius: 0;
|
|
130
|
+
background: var(--color-bg);
|
|
131
|
+
border-bottom: var(--border-width) solid var(--border-subtle);
|
|
132
|
+
|
|
133
|
+
h3 {
|
|
134
|
+
margin: 0;
|
|
135
|
+
font-size: 1rem;
|
|
136
|
+
font-weight: 600;
|
|
137
|
+
color: var(--color-fg);
|
|
138
|
+
}
|
|
120
139
|
}
|
|
121
140
|
}
|
|
122
141
|
|
|
123
142
|
@mixin ln-table-toolbar-search {
|
|
124
|
-
--padding-y: var(--size-2xs); // lowers panel-header min-height floor for this
|
|
125
|
-
width: auto; // hug the 10rem input
|
|
143
|
+
--padding-y: var(--size-2xs); // lowers panel-header min-height floor for this wrapper
|
|
144
|
+
width: auto; // hug the 10rem input
|
|
126
145
|
|
|
127
146
|
> .ln-icon {
|
|
128
147
|
padding-top: var(--size-2xs); // tighten leading icon vertical padding (was var(--size-xs))
|
|
@@ -138,7 +157,8 @@
|
|
|
138
157
|
// ─── Count badge ──────────────────────────────────────────
|
|
139
158
|
|
|
140
159
|
@mixin ln-table-count {
|
|
141
|
-
|
|
160
|
+
font-size: var(--text-xs);
|
|
161
|
+
font-weight: 500;
|
|
142
162
|
--color-fg: var(--fg-muted);
|
|
143
163
|
color: var(--color-fg);
|
|
144
164
|
|
|
@@ -164,14 +184,15 @@
|
|
|
164
184
|
@include flex;
|
|
165
185
|
@include items-center;
|
|
166
186
|
@include justify-between;
|
|
167
|
-
--padding-y: var(--size-
|
|
187
|
+
--padding-y: var(--size-xs-up);
|
|
168
188
|
--padding-x: var(--size-md);
|
|
169
189
|
padding: var(--padding-y) var(--padding-x);
|
|
170
|
-
|
|
190
|
+
border-top: var(--border-width) solid var(--border-subtle);
|
|
171
191
|
--color-bg: var(--bg-sunken);
|
|
172
192
|
background: var(--color-bg);
|
|
173
|
-
border-radius: 0
|
|
174
|
-
|
|
193
|
+
border-radius: 0;
|
|
194
|
+
font-size: var(--text-xs);
|
|
195
|
+
font-weight: 500;
|
|
175
196
|
--color-fg: var(--fg-muted);
|
|
176
197
|
color: var(--color-fg);
|
|
177
198
|
position: sticky;
|
|
@@ -243,13 +264,13 @@
|
|
|
243
264
|
border: none;
|
|
244
265
|
|
|
245
266
|
&:hover {
|
|
246
|
-
--color-bg: var(--bg-
|
|
267
|
+
--color-bg: var(--bg-hover);
|
|
247
268
|
background-color: var(--color-bg);
|
|
248
269
|
color: var(--color-fg);
|
|
249
270
|
}
|
|
250
271
|
|
|
251
272
|
&[data-active] {
|
|
252
|
-
background-color: color-mix(in srgb, var(--color-accent)
|
|
273
|
+
background-color: color-mix(in srgb, var(--color-accent) var(--tint-selected), transparent);
|
|
253
274
|
color: var(--color-accent);
|
|
254
275
|
}
|
|
255
276
|
}
|